2013-11-20 295 views
0

因此,我有一個集合和該集合的一個模型,我們稱之爲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

使用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(); 
       } 
      }); 
     } 
    }); 
}; 
+0

現在我得到一個不同的錯誤:{消息:「投射到的ObjectId失敗值‘the_html_structure’在路徑‘nextPost’」 –

+0

對不起,是我不好,從來不介意以前的評論。謝謝 –