用mongoose更新文档

时间:2013-11-20 17:07:28

标签: node.js mongodb mongoose

所以,我有一个集合和该集合的模型,我们称之为Post。 我想创建一个排序机制,正如您在代码中看到的那样。

var assignOrder = function(callback){
    var donePosts = 0;
    Post.find().sort({publishDate: 1}).exec(function(err, posts){
        for(var i = 0; i < posts.length; i++){
            var post = posts[i];
            var previousPost = posts[i-1] || {};
            var nextPost = posts[i+1] || {};

            post.previousPost = previousPost.slug;
            post.nextPost = nextPost.slug;

            post.update(function(err, post, affected){
                if(++donePosts === posts.length){
                    callback();
                }
            });
        }
    });
};

我不明白为什么这些帖子没有在数据库中更新 我收到错误:错误:[MongoError:不允许在_id上修改],但我没有在任何地方设置新的_id。

感谢

1 个答案:

答案 0 :(得分:1)

使用save代替update提交对模型实例的更改。

var assignOrder = function(callback){
    var donePosts = 0;
    Post.find().sort({publishDate: 1}).exec(function(err, posts){
        for(var i = 0; i < posts.length; i++){
            var post = posts[i];
            var previousPost = posts[i-1] || {};
            var nextPost = posts[i+1] || {};

            post.previousPost = previousPost.slug;
            post.nextPost = nextPost.slug;

            // Call save here, not update.
            post.save(function(err, post, affected){
                if(++donePosts === posts.length){
                    callback();
                }
            });
        }
    });
};