[英]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.