繁体   English   中英

对数组中的所有值运行查找查询

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

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