Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 Mongoose$pull运算符未从数组中删除ObjectID_Javascript_Node.js_Mongoose_Mongoose Schema - Fatal编程技术网

Javascript Mongoose$pull运算符未从数组中删除ObjectID

Javascript Mongoose$pull运算符未从数组中删除ObjectID,javascript,node.js,mongoose,mongoose-schema,Javascript,Node.js,Mongoose,Mongoose Schema,在我的应用程序中,我有一个post模式(如下所示): 我想在发送用户请求时从likes数组中删除objectid 路线: const post = await Post.findOne({_id: req.params.postid}) const user = req.user._id post.update({}, {$pull: {likes: user}}) post.likeNum-- await post.save() res.send('Unliked') 但是,调用路由时,o

在我的应用程序中,我有一个post模式(如下所示):

我想在发送用户请求时从likes数组中删除
objectid

路线:

const post = await Post.findOne({_id: req.params.postid})
const user = req.user._id

post.update({}, {$pull: {likes: user}})
post.likeNum--
await post.save()
res.send('Unliked')
但是,调用路由时,
objectid
不会从数组中删除。有人知道为什么吗?谢谢

更新:

const user = mongoose.Types.ObjectId(req.user._id)
更新2:

Post.updateOne({_id: req.params.postid}, { $pull: { likes: mongoose.Types.ObjectId(req.user._id) } })
post.likeNum--
await post.save()
res.send('Unliked')

您可以在一个查询中执行这两个操作,无需
findOne

  • 使用
    mongoose.Types.ObjectId
  • $inc
    likum

尝试使用
mongoose.Types.ObjectId(请求用户id)
@turivishal Hello将\u id转换为对象id。这仍然没有从数组中删除对象id。请参阅上面的更新代码。您正在对find对象执行更新操作,只需执行单独的查询
wait Post.update({},{$pull:{likes:mongoose.Types.ObjectId(req.user.\u id)}})
@turivishal Hi这仍然不起作用。请在查询之前检查上面的更新代码
wait
,无需
post.save()
命令,因为
updateOne
将保存事务,如果它仍然不起作用,请尝试转换查询
{u id:mongoose.Types.ObjectId(req.params.posted)}
Post.updateOne({_id: req.params.postid}, { $pull: { likes: mongoose.Types.ObjectId(req.user._id) } })
post.likeNum--
await post.save()
res.send('Unliked')
await Post.updateOne(
  { _id:  req.params.postid },
  {
    $pull: { likes: mongoose.Types.ObjectId(req.user._id) },
    $inc: { likeNum: -1 }
  }
);
res.send('Unliked');