В момента само 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(