sql >> Databáze >  >> NoSQL >> MongoDB

mongoose nemůže naplnit pomocí typu String

V současné době pouze ObjectId hodnoty, které odkazují na _id jiné kolekce lze použít jako refs .

Zde je jedna diskuze https://github.com/Automattic/mongoose/issues/2562

V budoucnu by však mohlo jít o jedno vylepšení.

Ve skutečnosti není nutné přidávat default hodnotu populate stačí definovat fooAccessType jak je uvedeno níže

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

Pro population

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

ObjectID se používá v population a ObjectId je 12bajtový typ BSON, vytvořený pomocí:

Takže SuperAdmin není jedno správné ObjectID . Můžete použít UUID jako výchozí hodnotu ObjectID

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

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

Výše uvedený kód je však divný, fooAccesType je odkaz na AccessType dokument.

Při pokusu o uložení field dokument, AccessType by měl být nejprve uložen, pak získat ObjectID z tohoto uloženého AccessType a přiřaďte jej fooAccessType , případně uložte nové field dokument.

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

       });
   }
});

Pro population

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


  1. Připojení odmítlo MongoDB errno 111

  2. Jak vypustit nebo smazat sbírku v MongoDB?

  3. jak používat agregační funkci v meteoru

  4. Chyba [ERR_HTTP_HEADERS_SENT] Nelze nastavit záhlaví po jejich odeslání klientovi