sql >> Base de Datos >  >> NoSQL >> MongoDB

la mangosta no puede poblarse usando el tipo String

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(