$ push没有创建新的数组字段。使用Mongoose

时间:2015-12-29 03:01:34

标签: node.js mongodb mongoose push

在博客网站上工作。在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

2 个答案:

答案 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)

谢谢玛丽亚!问题是你无法将新领域推向猫鼬模型。所有字段都必须事先定义。