För närvarande endast ObjectId
värden som refererar till _id
av en annan samling kan användas som refs
.
Här är en diskussion https://github.com/Automattic/mongoose/issues/2562
Det kan dock bli en förbättring i framtiden.
Egentligen är det inte nödvändigt att lägga till default
värde att populate
fältet definierar du bara fooAccessType
som nedan
fooAccessType: {
type: String,
ref: 'AccessType'
},
För population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
ObjectID
används i population
och ObjectId
är en 12-byte BSON-typ, konstruerad med:
Alltså SuperAdmin
är inte ett korrekt ObjectID
. Du kan använda UUID
som standardvärde för ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Ovanstående kod är dock konstig, fooAccesType
är referens till AccessType
dokument.
När du försöker spara field
dokumentet, AccessType
bör sparas först och sedan hämta ObjectID
från denna sparade AccessType
och tilldela den till fooAccessType
, så småningom, spara det nya field
dokument.
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
För population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(