所以我在数据库中有一个基本上是博客文章的对象,其中有一个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(){});
出于某种原因,它会添加这两个类别,而不是擦除类别数组并插入它们。
如何删除它们并插入新的?
答案 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”)。你可以尝试一下,看看你是否得到了相同的结果?也许它与猫鼬版本或其他东西有关。