Mongoose / MongoDB - 保存记录以覆盖当前数据:

时间:2011-12-09 19:29:47

标签: mongodb node.js mongoose

所以我在数据库中有一个基本上是博客文章的对象,其中有一个ObjectID数组,引用了Categories集合。

所以

Posts = {
   title: String,
   Content: String,
   Categories: [{
       type: ObjectID,
       ref: 'Categories'
   }]

我可以很好地创建帖子,当我尝试更新它们时出现问题:

post.title = 'hi';
post.content = 'content';
post.categories = ['44523452525','4e1342413421342'];

post.save(function(){});

出于某种原因,它会添加这两个类别,而不是擦除类别数组并插入它们。

如何删除它们并插入新的?

1 个答案:

答案 0 :(得分:5)

我试图重现这种行为,但我不能 - 这是我运行的代码示例:

var mongoose = require('mongoose')
var Schema = mongoose.Schema

mongoose.connect('mongodb://localhost/testjs');

PostSchema = new Schema({
  title:String,
  content:String,
  cats:[]
});
var Post = mongoose.model('Post', PostSchema);

var mypost = new Post()
mypost.title = "x"
mypost.content = "y"
mypost.cats = ['a','b','c']
mypost.save(
  function(err){
    mypost.cats = ['d','e']
    mypost.save()
  }
);

第二次调用save()后,数组只包含它所设置的内容(“d”,“e”)。你可以尝试一下,看看你是否得到了相同的结果?也许它与猫鼬版本或其他东西有关。