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(