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(