我在我的节点和mongodb应用程序中注册了一些用户(以及他们的联系号码)的集合。 现在我有一系列联系电话。我希望在我的应用程序中获得此阵列与用户的交集。怎么做,因为我不能拿每个号码并检查它在数据库中是否存在。任何帮助/链接都会有所帮助。提前谢谢。
答案 0 :(得分:1)
您可以使用$in
运算符。如果您至少提供了一些代码,例如您的模式,之前的尝试等,那将会非常有用。
以下是如何执行ii的示例,假设您使用的是mongoose,并且具有number
属性和数组numbers
的用户架构。
User.find({ number: { $in: numbers } })
.then(function (docs) {
// do something with docs here;
})
.catch(handleErr);
答案 1 :(得分:0)
这可以简单地使用promises来完成。我假设您有一系列联系号码和一个集合用户,其中包含现场联系号码。以下功能将为您提供阵列中列出的联系号码的所有用户列表。我假设User模型可用,并且联系人数组作为函数参数传递。基本上,此函数将遍历联系人列表数组,并在用户集合中查找具有该联系人的任何用户并返回承诺。所有承诺都被推送到一个数组中,只有当所有异步操作都完成后才会解决承诺,从而导致成功或错误。
// import User from User-model-defition
function getUsersByContact(contactArr) {
return new Promise((resolve, reject) => {
const data = [];
const errors = [];
contactArr.map(id => {
User.findOne({ contact_no : id })
.then(response => {
if (response.user) { //checking if the response actually contains a user object
data.push(response.user);
} else {
errors.push(response.error);
}
if (contactArr.length === data.length + errors.length) {
//this makes sure that the promise will be resolved only when all the promises have been resolved
resolve({ data, errors });
}
})
.catch(error => reject(error));
})
})
}