当我尝试将MongoError: Unknown modifier $pushAl
推送到点赞数组时出现userId
错误:
最佳答案
从版本$pushAll
开始不推荐使用2.4
:
从版本2.4开始不推荐使用:将$ push运算符与$ each一起使用。
您可以/应该使用正在使用的MongoDB版本升级到compatible的Mongoose的最新版本,或者将MongoDB降级为仍支持$pushAll
的旧版本。我会建议前者。
另外,如果您使用的是Mongoose版本usePushEach: true
,则可以在定义架构时使用< 5
选项:
new mongoose.Schema({ ... }, {
usePushEach: true,
});
您可以在GitHub上阅读有关该问题的更多信息:
vkarpov15于2017年9月26日评论
好吧,这是一个问题,MongoDB
3.5
是一个不稳定的开发版本,不应使用。 $pushAll
已被弃用很长时间,所以也许他们在3.5
中将其删除。 @mbroadst您可以澄清吗?我们添加了
usePushEach
选项来解决此问题:#4455,这应该是解决此问题的方法:new Schema({ arr: [String] }, { usePushEach: true });
在Mongoose version
usePushEach
上放弃了对>= 5
的支持,因此在这种情况下,您可以改用Array.prototype.concat()
,因此您的旧代码为:selectedHotel.likes.push(userId);
会变成:
selectedHotel.likes = selectedHotel.likes.concat([userId]);
请注意,我将
concat
返回的值分配回selectedHotel.likes
,因为concat
不会使原始Array发生变异。关于javascript - MongoError:当我尝试将userId插入Node.js中的Array字段时,未知修饰符$ pushAll,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50455054/