7

Node + Express プロジェクトを実行しています。次のスキーマとモデルを使用して基本的なブログ システムを構築しています。

var Post = mongoose.Schema({
    title: String,
    body: String,
    author: String,
    dateCreated: {type: Date, default: Date.now },
    comments: [{author: String, body: String, date: Date}]
});
var Post = db.model('Post', Post);

次のコードで投稿リクエストを受け入れ、そこからタイトル、本文、作成者を更新します

app.post('/addpost', function(req,res){
    console.log(req.body.post);
    var post = new Post(req.body.post);
    post.save(function(err){
        if(!err){
            res.redirect('/');
        }else{
            res.redirect('/');
        }
    })
})

私が持っている質問は、私が既に開発したコーダを使用してスキーマにコメントを追加するにはどうすればよいですか?

req.body.post出力

{ title: 'Hello World', body: 'This is a body', author: 'Bioshox' }

どちらが明らかにマングースに受け入れられますが、コメントを追加するにはどうすればよいでしょうか?

ありがとう!!

4

1 に答える 1

13

次のコード スニペットを使用できます。

var comment = {
    author: req.body.post.author , 
    body: req.body.post.body, 
    date: new Date()
};

Post.findOneAndUpdate(
  { title: req.body.post.title },
  { $push: { comments: comment }},
  { safe: true, upsert: true },
  function(err, blogModels) {
    // Handle err
  });

このスニペットは単に投稿を見つけようとします。Blog成功した場合$pushは新しいコメントが作成され、そうでない場合はブログ投稿に最初のコメントが追加されます。したがって、最終的なコードは次のようになります。

app.post('/addpost', function(req,res) {
    var comment = {
        author: req.body.post.author , 
        body: req.body.post.body, 
        date: new Date()
    };

    Post.findOneAndUpdate(
      { title: req.body.post.title },
      { $push: { comments: comment }},
      { safe: true, upsert: true },
      function(err, blogModels) {
        // Handle err
        });
});
于 2012-11-16T10:20:33.047 に答える