MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongoose не може да попълва с помощта на тип String

В момента само ObjectId стойности, които се отнасят до _id от друга колекция могат да се използват като refs .

Ето една дискусия https://github.com/Automattic/mongoose/issues/2562

Това обаче може да бъде едно подобрение в бъдеще.

Всъщност не е необходимо да добавяте default стойност за populate поле, просто дефинирайте fooAccessType както по-долу

fooAccessType: {
    type: String, 
    ref: 'AccessType'
},  

За population

FacilityPersonnel.findOne({_id:req.params.id})
    .populate('fooAccessType')
    .exec(

ObjectID се използва в population и ObjectId е 12-байтов BSON тип, конструиран с помощта на:

Така че SuperAdmin не е един правилен ObjectID . Можете да използвате UUID като стойност по подразбиране на ObjectID

var uuid = require('node-uuid');

// ...
fooAccessType: {
    type: String, 
    default: uuid.v1, 
    ref: 'AccessType'
},  

Горният код обаче е странен, fooAccesType е препратка към AccessType документ.

При опит за запазване на field документ, AccessType трябва първо да се запише, след което да се получи ObjectID от този запазен AccessType и го присвоете на fooAccessType , евентуално запазете новото field документ.

var access = new AccessType({});
access.save(function(err){
   if (err)
      // error handling
   else {
       facilityperson.fooAccessType = access._id;
       facilityperson.save(function(err) {

       });
   }
});

За population

FacilityPersonnel.findOne({_id:req.params.id})
    .populate('fooAccessType')
    .exec(


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. GET заявката винаги е по подразбиране /(?:)/i - как мога да я направя "недефинирана"? - Втори въпрос по тази тема

  2. Съхранявайте свързани ключове като OID или низове в MongoDB

  3. Запазване, организиране и търсене на продукти, опции/тагове и категории

  4. Грешка:Route.post() изисква функции за обратно извикване, но получи [object Undefined]

  5. MongoDB изтегля елемент от масив две нива дълбоко