Obecnie tylko ObjectId
wartości, które odnoszą się do _id
innej kolekcji może być użyty jako refs
.
Oto jedna dyskusja https://github.com/Automattic/mongoose/issues/2562
Jednak może to być jedno z ulepszeń w przyszłości.
Właściwie nie ma potrzeby dodawania default
wartość do populate
pole, po prostu zdefiniuj fooAccessType
jak poniżej
fooAccessType: {
type: String,
ref: 'AccessType'
},
Dla population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
ObjectID
jest używany w population
i ObjectId
to 12-bajtowy typ BSON, skonstruowany przy użyciu:
Więc SuperAdmin
nie jest jednym poprawnym ObjectID
. Możesz użyć UUID
jako domyślna wartość ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Jednak powyższy kod jest dziwny, fooAccesType
jest odniesieniem do AccessType
dokument.
Kiedy próbujesz zapisać field
dokument, AccessType
należy najpierw zapisać, a następnie uzyskać ObjectID
z tego zapisanego AccessType
i przypisz go do fooAccessType
, ewentualnie zapisz nowe field
dokument.
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
Dla population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(