我正在使用express和mongoose,我想过滤来自数据库的数组。来自数据库的对象的格式与我请求中的对象格式不同。我相信这就是为什么它不过滤的原因。我该如何解决?
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
除非对象相同,否则它将始终返回。
对此有更详细的了解:如何确定两个JavaScript对象的相等性?
对于您而言,解决问题的一种快速方法是比较过滤器功能中的标题:
task => task.title !== req.body.task.title
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句