5 mongoose mongodb node.js express
我正在运行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);
Run Code Online (Sandbox Code Playgroud)
我通过以下代码接受邮寄请求,并从中更新标题,正文和作者
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('/');
}
})
})
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何使用我已经开发的coda将注释添加到模式中?
req.body.post 输出
{ title: 'Hello World', body: 'This is a body', author: 'Bioshox' }
Run Code Online (Sandbox Code Playgroud)
对于Mongoose来说,这显然是可以接受的,但是为了添加评论,我将如何解决这个问题?
谢谢!!
Tol*_*yüz 11
您可以使用以下代码段:
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
});
Run Code Online (Sandbox Code Playgroud)
这个片段只是试图找到一个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
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4263 次 |
| 最近记录: |