Actualmente, solo ObjectId valores que se refieren al _id de otra colección se puede usar como refs .
Aquí hay una discusión https://github.com/Automattic/mongoose/issues/2562
Sin embargo, podría ser una mejora en el futuro.
En realidad, no es necesario agregar default valor a populate campo, simplemente defina el fooAccessType como abajo
fooAccessType: {
type: String,
ref: 'AccessType'
},
Para population
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
El ObjectID se utiliza en la population y el ObjectId es un tipo BSON de 12 bytes, construido usando:
Así que SuperAdmin no es un ObjectID correcto . Podría usar UUID
como el valor predeterminado de ObjectID
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
Sin embargo, el código anterior es raro, el fooAccesType es una referencia a AccessType documento.
Cuando intente guardar el field documento, el AccessType debe guardarse primero, luego obtenga el ObjectID de este AccessType guardado y asígnelo a fooAccessType , finalmente, guarde el nuevo 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(