繁体   English   中英

由于引号不同,Array.prototype.filter() 不适用于对象数组

[英]Array.prototype.filter() doesn't work on array of objects because of different quotes

我正在使用 express 和 mongoose,我想过滤来自数据库的数组。 数据库中对象的格式与我请求中的 object 不同。 我相信这就是为什么它没有按应有的方式进行过滤的原因。 我该如何解决?

router.post("/deleteTask", auth, async (req, res) => {
  try {
    const user = await User.findById(req.user);
    console.log(req.body.task);
    console.log(user.tasks.filter(task => task !== req.body.task));
    await User.updateOne(
      { _id: req.user },
      { tasks: user.tasks.filter(task => task !== req.body.task) },
      { upsert: true }
    );
    res.json(true);
  } catch (error) {
    res.json({
      message: error.message
    });
  }
});

第一个 console.log 日志{ title: 'test888', description: '' }

第二个 console.log 日志... {"title":"test888","description":""}...

您正在比较两个对象。 这将始终返回false ,除非对象相同

查看更多详细信息: How to determine equality for two JavaScript objects?

在您的情况下,解决问题的快速方法是比较过滤器 function 中的标题:

task => task.title.== req.body.task.title

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM