Я создал модуль node.js, который уже может запросить MongoDB для набора документов, используя поиск и выводя эти результаты в JSON. Мой вопрос: зная, что node.js является асинхронным, как я могу использовать результаты этого запроса (элементов), чтобы создать запрос, который возвращается в MongoDB, чтобы найти другой набор документов. Этот запрос в основном возвращает список идентификаторов сотрудников, которые могут использоваться для запроса документов, содержащих информацию об этих сотрудниках (то есть firstName, lastName и т. Д.). Затем выведите эти результаты вместо JSON. Первый запрос в основном говорит: дайте мне всех сотрудников, которые могут просматривать конкретный пользователь. Затем мне нужно взять идентификаторы сотрудников и сделать запрос на другой набор документов, содержащий информацию о лицах, как вы видите ниже.Node.js и MongoDB Используйте результаты одного запроса в другом
Вот два документа схемы:
Сотрудник
{
"_id" : ObjectId("5208db78ecc00915e0900699"),
"clientId" : 1,
"employeeId" : "12345",
"lastName" : "DOE",
"firstName" : "JOHN",
"middleName" : "A",
"badge" : "8675309",
"birthDate" : "10/12/1978"
}
Пользователи сотрудник может получить доступ (Cache User)
{
"_id" : ObjectId("520920a99bc417b7c5e36abf"),
"clientSystem" : "SystemX",
"customerNumber" : "1",
"clientUserId" : "jdoe3",
"securityCode" : "authorize",
"employeeId" : "12345",
"creationDate" : "2013-Aug-12 13:51:37"
}
Вот мой код:
exports.employeeList = function(req, res) {
console.log(req.params);
var clientSystem = req.query["clientSystem"];
var clientUserId = req.query["clientUserId"];
var customerNumber = req.query["customerNumber"];
var securityCode = req.query["securityCode"];
if (clientSystem != null && clientUserId != null && customerNumber != null && securityCode != null){
db.collection('ExtEmployeeList', function(err, collection){
collection.find({'clientSystem': clientSystem, 'clientUserId':clientUserId, 'customerNumber':customerNumber, 'securityCode': securityCode}).toArray(function (err, items){
console.log(items);
res.jsonp(items);
});//close find
});//close collection
}//close if
else {
res.send(400);
}//close else
};//close function
2 предложения - используйте '$ in' для извлечения набора документов на основе идентификатора сотрудника и посмотрите на Mongoose, поскольку это упрощает этот тип операции. – WiredPrairie