从参考数组中删除项目(猫鼬)

时间:2015-04-23 20:56:08

标签: javascript node.js mongodb

我有一个User模型,其中包含对其他用户的引用数组:

friends          : [ { type: Schema.Types.ObjectId, ref: 'User' } ]

如何从此列表中删除项目?这就是我到目前为止所做的:

var index = user.friends.indexOf(friend_id);

这可以正确获取项目的索引。现在我正在尝试拼接:

user.friends = user.friends.splice(index, 1);
user.save();

不幸的是,这不起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您使用splice()的方式存在问题。您正在使用它并期望user.friends成为结果数组。但是,splice()实际上会更改上下文数组并返回已删除的项目。基本上,user.friends现在包含已删除的项目而不是修改的项目。

要解决此问题,请在执行splice()时删除作业:

user.friends.splice(index, 1);

而不是目前的方式:

user.friends = user.friends.splice(index, 1);

答案 1 :(得分:0)

您可以在对象上使用过滤方法,
我不确定语法,但它应该是这样的:

console.log(filter(Schema.Types.ObjectId, function(friends) {
  return !(user.friends == friend_id);
}
));

让我知道!!