Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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 mongodb不会从ObjectId数组中删除元素_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Node.js mongodb不会从ObjectId数组中删除元素

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

我的模式如下所示:

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, 但实际对象不会从数据库中删除。
我的代码有什么问题?

如果您使用的是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} }
谢谢,但我进口了所有必要的东西。控制台没有给我任何类型的错误,如果导入是问题的话,就不会出现这种情况。