【问题标题】:updating a document in mongoose更新 mongoose 中的文档
【发布时间】:2013-11-21 03:53:46
【问题描述】:

所以,我有一个集合和该集合的模型,我们称之为 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: Mod on _id not allowed] 但我没有在任何地方设置新的 _id。

谢谢

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案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();
                    }
                });
            }
        });
    };
    

    【讨论】:

    • 现在我得到一个不同的错误:{ message: 'Cast to ObjectId failed for value "the_html_structure" at path "nextPost"'
    猜你喜欢
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 2015-02-19
    • 2021-10-23
    • 2014-06-12
    • 2012-11-01
    相关资源
    最近更新 更多