2016-06-27 13 views
1

HALLO ich MEAN stack mit zwei Datenmodelle Pushing bin mit, die miteinander verwoben sind:Werte in MongoDB Modell in NodeJS

Post und in meinem

So Kommentar PostSchema I

comments:{ 
     type:mongoose.Schema.Types.ObjectId, 
     ref:'Comment' 

haben und in meinem CommentSchema Ich habe

post:{ 
     type:mongoose.Schema.Types.ObjectId, 
     ref:'Post' 
    } 

Nach Ich gebe einen Kommentar in meiner Ansicht ein Ich möchte, dass das Backend den Kommentar in der Kommentar-Sammlung speichert und den Kommentar auch in der Post-Sammlung speichert.

In meinem Server app.js Datei:

comment.save(function(err,comment){ 
     if(err){return next(err);} 
     var post = new Post(req.post) 
     post.comments.push(comment) 
     // OR req.post.comments.push(comment);etc 
     post.save(function(err,post){ 
      if(err){return next(err);} 

      res.json(comment); 
     }) 
    }) 

jedoch, wo ich post.comments.push oder req.post.comments.push verwenden, erhalte ich eine Fehlermeldung auf der Kommandozeile, dass push is not a function.

Der obige Code stammt aus einem Online-Tutorial [1]. Ich suchte das Netz, kann aber kein ähnliches Beispiel von push finden.

Können Sie mich bitte wissen, wenn ich mit push in die Irre geführt wurde und wenn es eine andere Möglichkeit gibt, dass ich das tun sollte?

[1] https://thinkster.io/mean-stack-tutorial#wiring-everything-up

+0

Der Fehler bedeutet, dass 'post.comments' kein Array ist. – Shrabanee

Antwort

1

Es sieht aus wie Sie nicht ARRAY Kommentare definiert haben, aber nur eine (Standard) Kommentar, daher ist es nicht Array ist, und es hat nicht „Push“ -Verfahren. Die Definition sollte so aussehen:

comments:[{ 
     type:mongoose.Schema.Types.ObjectId, 
     ref:'Comment'}] 
+0

Das ist genau richtig, danke! –