mongodb - 使用 Mongoose 遍历数组并从 MongoDB 返回第一个匹配项
问题描述
Users
我的数据库中有一个具有相应唯一性的集合ids
。我正在编写一个以 id 数组作为参数的函数,例如:
["user_id1", "user_id2", "user_id3", "user_id4"]
.
我希望我的查询返回第一个也是唯一一个匹配项。即使用上面的示例,如果user_id2
并且user_id4
是数据库中仅有的两个匹配用户,我的结果将只返回user_id2
。不在数据库中的用户 ID 将被忽略。
我目前的方法是使用while循环,但我想看看Mongoose是否提供了更好的解决方案。
当前伪代码:
function findOneUser(userIdArr) {
let user = 0;
let returnedUser;
while(!returnedUser || user < userIdArr.length) {
let id = userIdArr[user];
user = await User.findByID(id);
user++;
}
}
解决方案
试试这个。
使用 promises 和猫鼬 findOne 方法:
let argumentArr = ["user_id1", "user_id2", "user_id3", "user_id4"];
let getUser = new Promise(function(resolve, reject) {
for (let i = 0; i < argumentArr.length; i++) {
User.findOne({_id:argumentArr[i]}).then(user => {
if(Object.keys(user).length > 0){
resolve(user)
}
}).catch(err => {reject(err)})
}
});
getUser.then(
(user) => {console.log(user);},//expected results: user(:object)
(err) => {console.log(err);}
);
}
推荐阅读
- c# - Outlook 无法在 c# 中读取 ToMailID 和 FromMailID
- ios - ios中的联系人选择器以获取电话号码
- python - 在这种情况下,如何使 python 脚本运行得更快或使用多进程?
- javascript - (Javascript) 在使用 html 和 js 查找代码中的错误时需要帮助
- php - 免费或收费送货 - Woo commerce
- spring-data-mongodb - 使用最新的 Spring Data Mongo 反应时的 Mongo 转换异常
- text-to-speech - 如何为 Windows 8 构建 flite 测试项目?
- zapier - Zapier - 无效的 API 响应
- nix - 如何卸载 Nix
- r - 在 lapply 中按名称指定 col_type