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

09-25 15:56