0

J'ai quelque chose comme ceci:documents Mongoose après avoir poussé à tableau refs document parent n'est pas renseigné

let fooSchema = new mongoose.Schema({ 
    bars: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Bar' }], 
}); 

et

let barSchema = new mongoose.Schema({ 
    sth1: String, 
    sth2: String, 
    sth3: String, 
}); 

Les deux schémas sont dans des fichiers séparés et exportés en tant que modèles de mangouste.

J'ai donc un foo document vide tableau bars et un bar document, par exemple:

let foo = new Foo({ bars: [] }); 
let bar = new Bar({ sth1: "1", sth2: "2", sth3: "3" }); 

Puis, quand je pousse bar dans foo de bars et le journal de la console ce tableau je suis arrivé:

foo.bars.push(bar); 
console.log(foo.bars); 
//it outputs: 
["59760dcbe3a7e31c2693ce47"] 

Donc, le foo.bars n'a que des identifiants. Que dois-je faire pour avoir des documents entiers dans ce tableau (sans sauvegarder, puis trouver et remplir ce champ)?

Ce que je veux réaliser est:

foo.bars.push(bar); 
console.log(foo.bars); 
[{ _id: 59760dcbe3a7e31c2693ce47, sth1: "1", sth2: "2", sth3: "3" }] 

Répondre

0

Vous utilisez la population, mais il semble que vous voulez utiliser sub documents:

let barSchema = new mongoose.Schema({ 
    sth1: String, 
    sth2: String, 
    sth3: String, 
}); 

let fooSchema = new mongoose.Schema({ 
    bars: [ barSchema ] 
}); 

Comme il n'y a pas de modèle associé pour barSchema, vous impossible d'instancier bar documents. Vous pouvez utiliser quelque chose comme ceci:

let foo = new Foo({ bars: [ { sth1: "1", sth2: "2", sth3: "3" } ] }); 

Ou:

let foo = new Foo; 
foo.bars.create({ sth1: "1", sth2: "2", sth3: "3" });