[英]Running find query for all values in an array
假设我有一组学生 ID,我想检查它们在我的数据库中是否都有效。 还知道其中哪些不在数据库中,然后将它们放入一个名为 faulty 的数组中。
let studentIDS = [435,345,343,654];
let faulty = [];
studentIDS.forEach(i=>{
StudentSchema.findOne(i).then(res=>{
if(!res) faulty.push(i);
})
})
这种方法会出现错误,因为 find 查询是异步的,并且 forEach 循环在查询运行之前就到达了末尾。 谁能帮我这个?
不要循环运行数据库查询。 在这种情况下,您可以使用$in运算符来获取匹配数据库文档的 id,然后运行简单的.filter()
来查找丢失的文档:
let studentIDS = [435,345,343,654];
let result = await StudentSchema.findOne({ _id: { $in: studentIDS } }, { _id:1 });
let resultIds = result.map(x => x._id);
let missing = studentIDS.filter(id => resultIds.indexOf(id) === -1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.