В момента само ObjectId стойности, които се отнасят до _id от друга колекция могат да се използват като refs .
Ето една дискусия https://github.com/Automattic/mongoose/issues/2562
Това обаче може да бъде едно подобрение в бъдеще.
Всъщност не е необходимо да добавяте default стойност за populate поле, просто дефинирайте fooAccessType както по-долу
fooAccessType: {
type: String,
ref: 'AccessType'
},
За population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
ObjectID се използва в population и ObjectId е 12-байтов BSON тип, конструиран с помощта на:
Така че SuperAdmin не е един правилен ObjectID . Можете да използвате UUID
като стойност по подразбиране на ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Горният код обаче е странен, fooAccesType е препратка към AccessType документ.
При опит за запазване на field документ, AccessType трябва първо да се запише, след което да се получи ObjectID от този запазен AccessType и го присвоете на fooAccessType , евентуално запазете новото field документ.
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
За population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(