Mongoose使用updateOne的$pop操作时出现Cast to number路径错误怎么解决?
错误原因
- 操作符误用:MongoDB 中
$pop操作符仅用于删除数组的头部或尾部元素,仅接受1(删除最后一个元素)或-1(删除第一个元素)作为参数。你向$pop传入了自定义的匹配对象,Mongoose 尝试将传入的非数值内容转为数字失败,直接触发了类型转换报错。 - 删除数组内匹配指定条件的元素,应该使用
$pull操作符而非$pop。
修复后的业务代码
不需要修改你现有的 Schema 配置,仅替换更新操作的操作符即可:
module.exports.removeFromCart = (userId,productId)=>{ return User.updateOne({_id: userId}, {$pull: {cartItems:{item:productId}}}).then((result)=>{ console.log(result); }).catch(error=>{ console.log(error); }) }
内容的提问来源于stack exchange,提问作者quielfala
相关产品推荐
相关产品推荐

