Derzeit nur ObjectId Werte, die auf die _id verweisen einer anderen Sammlung können als refs verwendet werden .
Hier ist eine Diskussion https://github.com/Automattic/mongoose/issues/2562
Es könnte jedoch eine Verbesserung in der Zukunft sein.
Eigentlich ist es nicht nötig, default hinzuzufügen Wert zum populate Feld, definieren Sie einfach den fooAccessType wie unten
fooAccessType: {
type: String,
ref: 'AccessType'
},
Für population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
Die ObjectID wird in der population verwendet , und die ObjectId ist ein 12-Byte-BSON-Typ, konstruiert mit:
Also SuperAdmin ist keine korrekte ObjectID . Sie könnten UUID
verwenden als Standardwert von ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Der obige Code ist jedoch seltsam, der fooAccesType ist ein Verweis auf AccessType Dokument.
Beim Versuch, das field zu speichern Dokument, der AccessType sollte zuerst gespeichert werden, dann die ObjectID abrufen aus diesem gespeicherten AccessType und weisen Sie es fooAccessType zu , speichern Sie schließlich das neue 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(