node.js - 如何在对象数组中查找对象?
问题描述
这是我在 Node 中的代码:
即使对象是同一个对象,结果也将始终为“否”。我尝试使用“==”和相同的答案 - “否”
const recipe = await getRecipes(req.params.id); \\ID
let user = await User.findById(req.user._id); \\ user
user.recipes.forEach((item) => {
console.log(item._id); \\ 5f196683308447452cd2c018
console.log(recipe._id); \\ 5f196683308447452cd2c018
if (item._id === recipe._id) {
console.log("yes");
} else {
console.log("no");
}
});
}); ```
解决方案
它不断输出“否”,因为您正在比较 2 个不同的 Mongo ObjectId 对象。
例如,console.log({a:1} === {a:1})
是错误的,因为它们是 2 个不同的对象。
如果你真的想通过 ObjectId 检查,你可以这样做:
item._id.toString() === recipe._id.toString()
推荐阅读
- scala - Databricks-Connect 错误 - SparkClientManager:无法获取 SparkClient
- android - 使用 ViewPager2 将方向更改为横向时显示两个片段
- mongodb - 什么性能更好,双并行查询还是先查询再array.reduce?MongoDB 和 JavaScript 性能
- json - 知道为什么第二种情况在 jq 命令中不起作用吗?
- javascript - PHP - 过滤用户查询以防止所有攻击
- database - 将数据从本地 linux 机器迁移到 GCP 永久磁盘
- python - 如何在使用 bs4 解析 html 文件时保留空格和缩进?
- javascript - krpano iphone safari 滚动问题
- arrays - 反应 setState 数组异步
- javascript - 如何在 Mongoose 数组中找到前十个最新对象 | Discord.js MongooseDB