Mongodb sails js waterline exec函数访问外部变量

Mongodb sails js waterline exec函数访问外部变量,mongodb,sails.js,waterline,Mongodb,Sails.js,Waterline,我有一个for循环,用于在MongoDB中创建大约5000个文档。 我的代码如下所示。问题是如何在exec函数中访问名为rawInfo的变量 for (var i = 0, len = output.length; i < len; i++) { var rawInfo = output[i]; Vehicle.create({make : rawInfo.make,model: rawInfo.model,year:rawInfo.year,

我有一个for循环,用于在MongoDB中创建大约5000个文档。 我的代码如下所示。问题是如何在exec函数中访问名为rawInfo的变量

 for (var i = 0, len = output.length; i < len; i++) {

        var rawInfo  = output[i];

     Vehicle.create({make :  rawInfo.make,model: rawInfo.model,year:rawInfo.year,
     tests : {deviceGeneration: rawInfo.deviceGeneration,
        overAllComp:rawInfo.overAllComp}}).exec(function(err,vehCreated){

          if(err && err.originalError && err.originalError.code===50)
           {
              // error vehicle is already present try to add test
              // using ***rawInfo*** variable 
             //VehicleTest.create()     

            }




        });


      }
for(变量i=0,len=output.length;i
vehicle\u TestInfo
在整个循环范围内都可用,因此您可以在内部
exec()
中访问它,就像在外部
exec()
中一样。如果您要在调用内部
exec()
之前添加更多代码,或者希望避免从循环级别范围调用
vehicle\u TestInfo
,那么您最好从
vehCreated
中检索属性,因为您可以访问新创建的对象

因此,这两种方法都可以很好地工作:

for (var i = 0, len = output.length; i < len; i++) {
    var vehicle_TestInfo  = output[i];

    Vehicle.create({ make : vehicle_TestInfo.make,
                    model: vehicle_TestInfo.model,
                    year: vehicle_TestInfo.year,
                    tests : { deviceGeneration: vehicle_TestInfo.deviceGeneration,
                                overAllComp: vehicle_TestInfo.overAllComp }
            }).exec(function(err,vehCreated){
                if (err && err.originalError && err.originalError.code === 50) {
                    VehicleTest.create({ deviceGeneration: vehicle_TestInfo.deviceGeneration,
                                            overAllComp: vehicle_TestInfo.overAllComp})
                            .exec(function(err,testCreated) {
                                    // more code
                            });
                }
    });
}
for(变量i=0,len=output.length;i

for(变量i=0,len=output.length;i

注:正如评论中所指出的,请将您的代码格式化,并正确地框定您的问题。此外,尝试以某种一致性命名变量。下划线和camelCase混合在一起会让人感到头晕。

请将代码格式化并缩进,以便我们能够正确地阅读它。您的意思是访问它。你能更具体地说明你想做什么吗?对不起,我的格式不好。我想现在好多了
for (var i = 0, len = output.length; i < len; i++) {
    var vehicle_TestInfo  = output[i];

    Vehicle.create({ make : vehicle_TestInfo.make,
                    model: vehicle_TestInfo.model,
                    year: vehicle_TestInfo.year,
                    tests : { deviceGeneration: vehicle_TestInfo.deviceGeneration,
                                overAllComp: vehicle_TestInfo.overAllComp }
            }).exec(function(err,vehCreated){
                if (err && err.originalError && err.originalError.code === 50) {
                    VehicleTest.create({ deviceGeneration: vehCreated.deviceGeneration,
                                            overAllComp: vehCreated.overAllComp})
                            .exec(function(err,testCreated) {
                                    // more code
                            });
                }
    });
}