javascript - 从引用数组中删除项目( Mongoose )

标签 javascript node.js mongodb

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

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/

相关文章:

node.js - 为什么很多 Node.js Web 框架都是基于 Express 构建的?为什么 Express 不实现这些功能?

javascript - 抓取亚马逊品牌页面

node.js - 是否有类似角度注入(inject)器的nod​​ejs依赖注入(inject)解决方案

javascript - 如何动态创建集合名称(取决于用户信息)

java - Spring-data-mongodb 不会在列表中保留多个对象

javascript - 每当我调用保存方法时调用保存方法

javascript - shinyBS 观察 bsCollapsePanel 的切换

javascript - 启用和禁用 jquery 单击可排序

linux - Robo3t crashing in ubuntu 16.04 and above version (This application failed start because it could not find or load the Qt platform plugin "xcb")

c# - 如何将 Angular POST 发送到 C# Asp.Net MVC Controller ?