I øjeblikket kun ObjectId værdier, der refererer til _id af en anden samling kan bruges som refs .
Her er en diskussion https://github.com/Automattic/mongoose/issues/2562
Det kan dog være en forbedring i fremtiden.
Faktisk er det ikke nødvendigt at tilføje default værdi at populate feltet, skal du blot definere fooAccessType som nedenfor
fooAccessType: {
type: String,
ref: 'AccessType'
},
Til population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
ObjectID bruges i population , og ObjectId er en 12-byte BSON-type, konstrueret ved hjælp af:
Så SuperAdmin er ikke et korrekt ObjectID . Du kan bruge UUID
som standardværdien for ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Ovenstående kode er dog mærkelig, fooAccesType er reference til AccessType dokument.
Når du prøver at gemme field dokumentet AccessType skal gemmes først, og derefter få ObjectID fra denne gemte AccessType og tildel den til fooAccessType , til sidst, gem det nye field dokument.
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
Til population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(