2017-07-17 3 views
0

Comment ajouter un sous-document unique à un document mongoose? Considérez le scénario suivant écrit en tapuscrit:mongoose: ajout d'un seul sous-document à un document

ParentSchema: Schema = new Schema({ 
    name: String, 
    child: ChildSchema 
}); 

ChildSchema: Schema = new Schema({ 
    name: String 
}); 

et je voudrais ajouter un nouvel enfant au parent chaque fois que je crée un nouveau parent. Pour mon exemple de code, le nouveau parent est créé mais l'enfant n'est jamais ajouté au parent. L'enfant continue d'afficher comme nul. Voici ma logique actuelle sauver:

let parentdoc = new this._model(iparent);//base repository protetected member 

     parentdoc.save((err: any, result: IParentModel) => { 
      if (err) { 
       reject(err); 
      } 

      result.child = new Child(child); 
      result.update(null, (err: Error, results1: IParentModel) => { 
       if (err) { 
        reject(err); 
       } 

        resolve(result1); 
      }); 
     }); 


where this._model = mongoose.model<IParentModel>("Parent", ParentSchema) 

Que, dans ce code, causerait le parent pour sauver et non l'enfant?

Répondre

0

On dirait que vous n'êtes pas envoyer des valeurs à la méthode de mise à jour, vous pouvez enregistrer à nouveau le document d'ajouter l'enfant au parent:

parentdoc.save((err: any, result: IParentModel) => { 
      if (err) { 
       reject(err); 
      } 

      result.child = new Child(child); 
      result.save(null, (err: Error, results1: IParentModel) => { 
       if (err) { 
        reject(err); 
       } 

        resolve(result1); 
      }); 
     }); 

Ou mettre l'enfant dans la méthode de mise à jour:

parentdoc.save((err: any, result: IParentModel) => { 
      if (err) { 
       reject(err); 
      } 

      const child1 = new Child(child); 
      result.update(null, { $set: { child: child1, } }, null, (err: Error, results1: IParentModel) => { 
       if (err) { 
        reject(err); 
       } 

        resolve(result1); 
      }); 
     });