Atualmente, apenas
ObjectId
valores que se referem ao _id
de outra coleção pode ser usado como refs
. Aqui está uma discussão https://github.com/Automattic/mongoose/issues/2562
No entanto, pode ser um aprimoramento no futuro.
Na verdade, não é necessário adicionar
default
valor para populate
campo, basta definir o fooAccessType
como abaixo fooAccessType: {
type: String,
ref: 'AccessType'
},
Para
population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
O
ObjectID
é usado na population
e o ObjectId
é um tipo BSON de 12 bytes, construído usando:Então
SuperAdmin
não é um ObjectID
correto . Você pode usar UUID
como o valor padrão de ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
No entanto, o código acima é estranho, o
fooAccesType
é referência a AccessType
documento. Ao tentar salvar o
field
documento, o AccessType
deve ser salvo primeiro, então pegue o ObjectID
deste AccessType
salvo e atribua-o a fooAccessType
, eventualmente, salve o novo field
documento. var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
Para
population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(