2013-11-20 5 views
0

Итак, у меня есть коллекция и модель для этой коллекции, назовем ее Post. Я хочу создать механизм заказа, как вы можете видеть в коде.Обновление документа в mongoose

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(); 
       } 
      }); 
     } 
    }); 
}; 

Я не понимаю, почему сообщения не обновляются в базе данных.
Я получаю ошибку: error: [MongoError: Mod on _id not allowed], но я не устанавливаю новый _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

теперь я получаю другую ошибку: {сообщение: «Cast к ObjectId неудачной для значения„the_html_structure“на пути„nextPost“» –

+0

извините, мой плохой, никогда не возражаю предыдущий комментарий. благодаря –

Смежные вопросы