V současné době pouze ObjectId
hodnoty, které odkazují na _id
jiné kolekce lze použít jako refs
.
Zde je jedna diskuze https://github.com/Automattic/mongoose/issues/2562
V budoucnu by však mohlo jít o jedno vylepšení.
Ve skutečnosti není nutné přidávat default
hodnotu populate
stačí definovat fooAccessType
jak je uvedeno níže
fooAccessType: {
type: String,
ref: 'AccessType'
},
Pro population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
ObjectID
se používá v population
a ObjectId
je 12bajtový typ BSON, vytvořený pomocí:
Takže SuperAdmin
není jedno správné ObjectID
. Můžete použít UUID
jako výchozí hodnotu ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Výše uvedený kód je však divný, fooAccesType
je odkaz na AccessType
dokument.
Při pokusu o uložení field
dokument, AccessType
by měl být nejprve uložen, pak získat ObjectID
z tohoto uloženého AccessType
a přiřaďte jej fooAccessType
, případně uložte nové field
dokument.
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
Pro population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(