2016-08-20 23 views
0

Ich habe eine ziemlich komplexe db:Pushing in verschachtelter Subdokument Arrays in Mungo

var bookSchema = mongoose.Schema({ 
    content: { 
     page: [pageSchema] 
    }, 
    //otherThings 
}); 

//my book has pages 
var pageSchema = mongoose.Schema(
    { 
     comments: [commentSchema] 
    }, 
    {_id: false} 
); 

//comments have replies. 
var commentSchema = mongoose.Schema({ 
    comment: String, 
    replies: [this] 
}); 

Ich versuche, eine Antwort auf einen Kommentar hinzuzufügen.

Ich habe die ID des Kommentars, auf den ich die Antwort hinzufügen möchte.

Aber wie?

Ich habe versucht:

Book.findOneAndUpdate(
      { 
      'content.page.comments._id': ID  
      }, 
      { 
      $push: {'content.page.$.comments.$.replies': myReply}  
      }, 
      function (err) { 
       //... 
      } 
     ) 

Aber das ist unmöglich, weil ich eine Positions ($) mehr als einmal verwenden kann nicht.

Ich versuche, das jetzt stundenlang herauszufinden.

Irgendwelche Ratschläge?

Antwort

0

Verwenden Sie einfache Art und Weise - commentsSchema

Comment.update({_id: ID}, {$push: {replies: myReply}}, function (err) {}); 

Dieser Kommentar Modell aktualisieren, und das Buch-Modell werden zu

+0

erhalten aktualisiert.Dieser funktioniert nicht. sogar Comment.find ({_ id: ID}) gibt keine Dokumente zurück. Sogar Comment.find ({}) gibt keine Dokumente zurück. Ich wünschte, es hätte funktioniert. es schien so nett! –

+0

Sie haben definitiv Probleme mit der Registrierung von Modellen, sollte es etwas zurückgeben –

+0

wenn 'comment.find ({})' gibt nichts zurück, wie können sie in 'Bücher' Schema gespeichert werden? Es muss ein Problem in Ihrem Code sein. Kannst du es noch einmal überprüfen? –

Verwandte Themen