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(