Momenteel alleen ObjectId waarden die verwijzen naar de _id van een andere collectie kan worden gebruikt als refs .
Hier is een discussie https://github.com/Automattic/mongoose/issues/2562
Het kan in de toekomst echter een verbetering zijn.
Het is eigenlijk niet nodig om default . toe te voegen waarde om populate veld, definieer gewoon het fooAccessType zoals hieronder
fooAccessType: {
type: String,
ref: 'AccessType'
},
Voor population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
De ObjectID wordt gebruikt in de population , en de ObjectId is een 12-byte BSON-type, geconstrueerd met:
Dus SuperAdmin is niet één juiste ObjectID . Je zou UUID
kunnen gebruiken als de standaardwaarde van ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
De bovenstaande code is echter raar, de fooAccesType is een verwijzing naar AccessType document.
Wanneer probeer je het field op te slaan document, het AccessType moet eerst worden opgeslagen en vervolgens de ObjectID . ophalen van dit opgeslagen AccessType en wijs het toe aan fooAccessType , sla uiteindelijk het nieuwe field op document.
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
Voor population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(