在博客网站上工作。在MongoDB中,我的博客文章没有开始的评论字段。我想使用$ push添加注释字段并添加注释值。下面的代码不会抛出任何错误,console.log会触发,但是当我检查MongoDB中的字段时,没有任何改变。
Post.findByIdAndUpdate(
postid,
{$push:{"comments": comment}},
{new: true},
function(err, added){
if(err){
throw err;
} else {
console.log('\n-------- Comment Added ----------\n');
res.redirect('/');
}
}
);
编辑:我发现这是因为我没有在架构中设置注释字段。但是现在我添加了它,我如何处理最初未定义的注释字段?我有玉代码列出所有评论(如果存在):
if post.comments
h3 Comments
each comment, i in comments
.comment
p.comment-name #{comment.name}
p.comment-text #{comment.body}
但我得到错误:
p.comment-text #{comment.body} Cannot read property 'length' of undefined
答案 0 :(得分:0)
尝试使用$ addToSet而不是$ push。
Post.findByIdAndUpdate(
postid,
{$addToSet:{"comments": comment}},
{new: true},
function(err, added){
if(err){
throw err;
} else {
console.log('\n-------- Comment Added ----------\n');
res.redirect('/');
}
});
答案 1 :(得分:0)
谢谢玛丽亚!问题是你无法将新领域推向猫鼬模型。所有字段都必须事先定义。