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(