所以我在DB中有一个基本上是博客文章的对象,其中有一个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(){});
出于某种原因,它将添加这两个类别,而不是擦除类别数组并插入它们.
如何删除它们并插入新的?
我试图重现这种行为,但我不能 - 这是我运行的代码示例:
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").你可以尝试一下,看看你是否得到了相同的结果?也许它与猫鼬版本或其他东西有关.