Attualmente, solo ObjectId valori che fanno riferimento a _id di un'altra collezione può essere usato come refs .
Ecco una discussione https://github.com/Automattic/mongoose/issues/2562
Tuttavia, potrebbe essere un miglioramento in futuro.
In realtà, non è necessario aggiungere default valore per populate campo, basta definire il fooAccessType come di seguito
fooAccessType: {
type: String,
ref: 'AccessType'
},
Per population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
Il ObjectID è usato nella population e ObjectId è un tipo BSON a 12 byte, costruito utilizzando:
Quindi SuperAdmin non è un ObjectID corretto . Potresti usare UUID
come valore predefinito di ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Tuttavia, il codice sopra è strano, il fooAccesType fa riferimento a AccessType documento.
Quando prova a salvare il field documento, il AccessType deve essere prima salvato, quindi ottenere l'ObjectID da questo AccessType salvato e assegnalo a fooAccessType , eventualmente, salva il nuovo field documento.
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
Per population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(