Node.js mongodb不会从ObjectId数组中删除元素
我的模式如下所示: const userSchema=新模式{ ... 以下为:[ { 用户:{ 类型:Schema.ObjectId, 参考:“用户” }, } ], 追随者:[ { 用户:{ 类型:Schema.ObjectId, 参考:“用户” }, } ], },{时间戳:true} 我需要实现unfollow特性。 我目前正在尝试: 试一试{ //检查您的id是否与要取消跟踪的用户的id不匹配 如果用户.\u id==当前\u id{ return res.status400.json{error:'您不能展开自己'} } //从以下数组中删除要取消跟踪的用户的id 常量查询={ _id:当前\u id } 常数更新={ $pull:{以下内容:{u-id:user.\u-id}} } const updated=User.updatequery,update //从要取消跟踪的用户的followers数组中删除您的id const secondQuery={ _id:用户。\u id } const secondUpdate={ $pull:{追随者:{u id:current\u id} } const secondUpdated=User.updatesecondQuery,secondUpdate 如果!已更新| |!第二次更新{ 返回res.status404.json{error:'cannotunfollow that user'} } res.status200.json{ 使现代化 第二次更新 } } 犯错误{ res.status400.send{error:err.message} } 这将给出状态200并向客户端发送update&secondUpdate, 但实际对象不会从数据库中删除。Node.js mongodb不会从ObjectId数组中删除元素,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我的模式如下所示: const userSchema=新模式{ ... 以下为:[ { 用户:{ 类型:Schema.ObjectId, 参考:“用户” }, } ], 追随者:[ { 用户:{ 类型:Schema.ObjectId, 参考:“用户” }, } ], },{时间戳:true} 我需要实现unfollow特性。 我目前正在尝试: 试一试{ //检查您的id是否与要取消跟踪的用户的id不匹配 如果用户.\u id==当前\u id{ return res.status400.json
我的代码有什么问题?如果您使用的是mongodb本机驱动器 您应该导入mongodb对象ID。在执行操作之前
const ObjectId = require('mongodb').ObjectID;
$pull: { "followers": {"_id": current_id} }
改为:
$pull: { "followers": {"_id": new ObjectId(current_id) }
谢谢你的回答。 就我而言,以下几点对我很有用 试一试{ //检查您的id是否与要取消跟踪的用户的id不匹配 如果用户.\u id==当前\u id{ return res.status400.json{error:'您不能展开自己'} } //从以下数组中删除要取消跟踪的用户的id 常量查询={ _id:当前\u id } 常数更新={ $pull:{以下内容:{u-id:user.\u-id}} } const updated=User.updateRequesty,update{ 安全:对 },functionerr,obj{ console.logerr; } //从要取消跟踪的用户的followers数组中删除您的id const secondQuery={ _id:用户。\u id } const secondUpdate={ $pull:{追随者:{u id:current\u id} } console.logsecondQuery console.logsecondUpdate User.updateOnesecondQuery,secondUpdate{ 安全:对 },functionerr,obj{ res.status200.json{ obj }; } } 犯错误{ res.status400.json{error:err.message} }
谢谢,但我进口了所有必要的东西。控制台没有给我任何类型的错误,如果导入是问题的话,就不会出现这种情况。