Actuellement, seul ObjectId
les valeurs qui font référence au _id
d'une autre collection peut être utilisé comme refs
.
Voici une discussion https://github.com/Automattic/mongoose/issues/2562
Cependant, cela pourrait être une amélioration à l'avenir.
En fait, il n'est pas nécessaire d'ajouter default
valeur à populate
champ, définissez simplement le fooAccessType
comme ci-dessous
fooAccessType: {
type: String,
ref: 'AccessType'
},
Pour la population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
L'ObjectID
est utilisé dans la population
, et le ObjectId
est un type BSON de 12 octets, construit à l'aide :
Donc SuperAdmin
n'est pas un ObjectID
correct . Vous pouvez utiliser UUID
comme valeur par défaut de ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Cependant, le code ci-dessus est bizarre, le fooAccesType
fait référence à AccessType
document.
Lorsque vous essayez d'enregistrer le field
document, le AccessType
doit être enregistré en premier, puis obtenir le ObjectID
à partir de ce AccessType
enregistré et attribuez-le à fooAccessType
, éventuellement, enregistrez le nouveau field
document.
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
Pour la population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(