Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Javascript MongoError:当我尝试将用户ID推入Node.js中的数组字段时,未知修饰符$pushAll_Javascript_Node.js_Mongodb_Mongoose_Mongodb Query - Fatal编程技术网

Javascript MongoError:当我尝试将用户ID推入Node.js中的数组字段时,未知修饰符$pushAll

Javascript MongoError:当我尝试将用户ID推入Node.js中的数组字段时,未知修饰符$pushAll,javascript,node.js,mongodb,mongoose,mongodb-query,Javascript,Node.js,Mongodb,Mongoose,Mongodb Query,当我尝试将userId推送到一个likes字段数组时,我得到一个MongoError:Unknown修饰符$pushAl错误: 自版本2.4以来已被弃用: 自版本2.4以来已弃用:改为将$push运算符与$each一起使用 您可以/应该升级到与您正在使用的MongoDB版本一起使用的最新版本的Mongoose,或者将MongoDB降级到仍然支持$pushAll的较旧版本。我会建议前者 或者,如果您使用的是Mongoose版本

当我尝试将
userId
推送到一个likes字段数组时,我得到一个
MongoError:Unknown修饰符$pushAl
错误:

自版本
2.4以来已被弃用:

自版本2.4以来已弃用:改为将$push运算符与$each一起使用

您可以/应该升级到与您正在使用的MongoDB版本一起使用的最新版本的Mongoose,或者将MongoDB降级到仍然支持
$pushAll
的较旧版本。我会建议前者

或者,如果您使用的是Mongoose版本
<5
,则可以在定义模式时使用
usepuseheach:true
选项:

new mongoose.Schema({ ... }, {
    usePushEach: true,
});
有关该问题的更多信息,请访问:

于2017年9月26日发表评论

这是一个问题,MongoDB
3.5
是一个不稳定的开发版本,不应该使用
$pushAll
已经被弃用很长一段时间了,所以他们可能在
3.5
中放弃了它。你能澄清一下吗

我们添加了一个
usePushEach
选项来解决这个问题,这应该是解决这个问题的一个方法:

new Schema({ arr: [String] }, { usePushEach: true });
usePushEach
的支持被删除,因此在这种情况下,您可以使用,因此您的旧代码:

selectedHotel.likes.push(userId);
将变成:

selectedHotel.likes = selectedHotel.likes.concat([userId]);
请注意,我正在将
concat
返回的值赋回到
selectedHotel.likes
,因为
concat
不会改变原始数组。

试试这个

selectedHotel._doc.likes.push({//anything})
或 这 我的旧代码

myArray.push(id); //breaks on DocumentDB with Mongo API because of $pushAll
已被替换为

myArray = myArray.concat([id]);

我只需更新到mongoose的最新版本就解决了这个问题。我在使用4.6版时也遇到了同样的问题,我确实
npm卸载了mongoose
,然后
npm I mongoose
安装了5.11.18版,这是撰写本文时的最新版本,问题得到了解决。
这对我来说是一个非常简单的解决方案,无需更改我的代码中的任何内容,它与上面所说的相同。

您能提供您试图使用的代码吗?修复它!刚刚在schema中添加了{usePushEach:true},变得像新的mongoose.schema({props},{usePushEach:true});