我有一个用户模型,其中包含对其他用户的引用数组:
friends : [ { type: Schema.Types.ObjectId, ref: 'User' } ]
如何从此列表中删除项目?这是我目前正在尝试的:
var index = user.friends.indexOf(friend_id);
这正确地获取了项目的索引。现在我正在尝试拼接:
user.friends = user.friends.splice(index, 1);
user.save();
不幸的是,这不起作用。有什么建议吗?
最佳答案
您使用 splice()
的方式存在问题。您正在使用它并期望 user.friends
成为结果数组。然而,splice()
实际上改变了context 数组并返回删除的项目。因此,从本质上讲,user.friends
现在保存的是已删除的项目,而不是已修改的项目。
要解决此问题,只需在执行 splice()
时删除赋值即可:
user.friends.splice(index, 1);
而不是你现在的样子:
user.friends = user.friends.splice(index, 1);
关于javascript - 从引用数组中删除项目( Mongoose ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29834151/