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(