Node.js 删除lodash后保存数组
所以我有这个代码:Node.js 删除lodash后保存数组,node.js,lodash,Node.js,Lodash,所以我有这个代码: _.remove(user.items, userItem => userItem.id === sellingItem.id); user.save(); 它当前所做的是从数组中删除一个项,但问题是当我保存用户时,数组中仍然有相同的删除项。当我进行拼接并保存用户时,该项也将从数据库中删除。为什么这不适用于删除 编辑 _.remove(user.items, userItem => userItem.id === sellingItem.id); const
_.remove(user.items, userItem => userItem.id === sellingItem.id);
user.save();
它当前所做的是从数组中删除一个项,但问题是当我保存用户时,数组中仍然有相同的删除项。当我进行拼接
并保存用户时,该项也将从数据库中删除。为什么这不适用于删除
编辑
_.remove(user.items, userItem => userItem.id === sellingItem.id);
const newArray = user.items; // array without the item
user.items = newArray;
user.save();
在数据库中仍然是旧的数组 这就是我的工作
_.remove(user.items, userItem => userItem.id === sellingItem.id);
const newArray = user.items;
user.items = [];
user.items = newArray;
user.save();
remove
将返回经过指定修改的新数组。所有Lodash方法都是这样工作的-它们将接受一个数组和一些回调,并返回一个数组,该数组对应于对原始数组应用回调。是的,它返回新数组而不包含项,即使我保存了用户,该数组仍像以前一样在数据库中包含所有项。不过,您永远不会更改原始数组user.items
与调用\之前保持完全相同。删除//不带项的数组
这不是不带项的数组。事实上,它只是对完全相同的数组的引用-newArray
实际上是与以前相同的数组,甚至不是具有相同内容的数组副本<代码>\删除
不会修改它所使用的数组,它将构造一个全新的数组,并作为调用的结果返回。因此,如果您想使用它,您需要捕获返回结果const newArray=.\u删除(/*…*/)
oknewArray=.\u删除(/*…*/)
也是一个问题,因为它返回的是删除的项而不是所有数组。因此,如果我将newArray
设置为user.items
则只剩下一项。我下面的方法仍然有效