繁体   English   中英

Node + Express Mongoose Sub Collection文档插入

[英]Node + Express Mongoose Sub Collection Document Insert

我正在运行Node + Express项目,我正在使用以下Schema和Models构建基本的博客系统

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('/');
        }
    })
})

我的问题是,如何使用我已经开发的coda将注释添加到模式中?

req.body.post输出

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

对于Mongoose来说,这显然是可以接受的,但是为了添加评论,我将如何解决这个问题?

谢谢!!

您可以使用以下代码段:

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
        });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM