所以我在数据库中有一个对象,基本上是blog posts,其中有一个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”)。你能试试看你是否得到同样的结果吗?可能和猫鼬的版本有关,或者别的什么。