2016-08-12 72 views
3

我拿来使用节点JS异步mongodb的发现()查询多个调用

find()方法的记录。指定者()

查询。在那个记录中,有其他文件(表格)的关系id。我想获取上面查找查询结果的每条记录的关系表记录。 像:

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); 
          } 
         }) 
        }) 
       }) 
      }) 
     } 
    }) 

我试图与回调函数,但它不是从mainCategory文档获取类别名称的值。 我也尝试获取for each()之外的内部提取的类别名称,但未得到temp数组的结果。

回答

0

This may help you.

它说.. 函数是JavaScript的是 “封闭” 范围的唯一的事情。

这意味着内部回调函数中的变量项在外部范围内不可访问。

您可以在外部范围中定义一个变量,以便所有内部变量都可见: