节点jsasynchronousmongodb find()查询多个调用

我使用提取logging

find()。指定者()

查询。 在那个logging中,有其他文件(表)的关系id。 我想获得上面查找查询结果的每条logging的关系表的logging。 喜欢:

db.collection('serviceBooking').find({'request_to_sp_user_id': docs._id.toString()}).toArray(function (err, serviceBookingDocs) { if (serviceBookingDocs.length) { var asyncCalls = []; serviceBookingDocs.forEach(function (bookingRecord, key) { var temp = {}; temp.userDetails = {}; //Async call for getting the user details for all users asyncCalls.push(function (callback) { db.collection('userDetails').findOne({'user_id': new mongo.ObjectID(bookingRecord.booked_by_user_id)}, function (err, userDetailsDocs) { db.collection('serviceBookingDetails').find({'serviceBookingId': bookingRecord._id.toString()}).toArray(function (err, bookingDetailsDocs) { if (userDetailsDocs) { if (bookingDetailsDocs.length) { temp.bookingDetails = bookingDetailsDocs; bookingDetailsDocs.forEach(function (bookDetailItems, key) { db.collection('serviceCatalog').findOne({'_id': new mongo.ObjectID(bookDetailItems.catalogId), isDeleted: 0}, function (err, spCatalogs) { db.collection('spServiceCatalog').findOne({'_id': new mongo.ObjectID(spCatalogs.serviceCategory)}, function (err, spServiceCatalogDocs) { if (spCatalogs) { (spServiceCatalogDocs) spCatalogs.catalogName = spServiceCatalogDocs.name; temp.bookingDetails[key].serviceCatalgs = spCatalogs; } else { spCatalogs.catalogName = null; temp.bookingDetails[key].serviceCatalgs = spCatalogs; } callback(null, temp); }) }) }) } } else { callback(null, null); } }) }) }) }) } }) 

我尝试callback函数,但它不从mainCategory文档中获取类别名称的值。 我也尝试在forEach()之外获取内部获取的类别名称,但是它没有得到temp数组的结果。

这可能会帮助你。

它说..function是唯一的东西在“封闭”范围的JavaScript。

这意味着内部callback函数中的variables项目在外部作用域上不可访问。

您可以在外部范围中定义一个variables,以便所有内部variables都可以看到: