Mongodb sails js waterline exec函数访问外部变量
我有一个for循环,用于在MongoDB中创建大约5000个文档。 我的代码如下所示。问题是如何在exec函数中访问名为rawInfo的变量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 (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
});
}
});
}