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(