Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 删除lodash后保存数组_Node.js_Lodash - Fatal编程技术网

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删除(/*…*/)
ok
newArray=.\u删除(/*…*/)
也是一个问题,因为它返回的是删除的项而不是所有数组。因此,如果我将
newArray
设置为
user.items
则只剩下一项。我下面的方法仍然有效