sails js waterline exec 函数访问外部变量
sails js waterline exec function access outside variable
我有一个用于大约 5000 个项目的 for 循环,用于在 MongoDB 中创建文档。
我的代码如下所示。问题是如何在 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()
}
});
}
vehicle_TestInfo
在整个循环范围内可用,因此您可以在内部 exec()
中访问它,就像在外部 exec()
中一样。如果您要在调用内部 exec()
之前添加更多代码,或者您希望避免从循环级范围调用 vehicle_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 (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
});
}
});
}
PS:正如评论中所指出的,请格式化您的代码并正确构建您的问题。此外,尝试以某种统一的方式命名您的变量。下划线混合驼峰命名法让人头晕
我有一个用于大约 5000 个项目的 for 循环,用于在 MongoDB 中创建文档。 我的代码如下所示。问题是如何在 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()
}
});
}
vehicle_TestInfo
在整个循环范围内可用,因此您可以在内部 exec()
中访问它,就像在外部 exec()
中一样。如果您要在调用内部 exec()
之前添加更多代码,或者您希望避免从循环级范围调用 vehicle_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 (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
});
}
});
}
PS:正如评论中所指出的,请格式化您的代码并正确构建您的问题。此外,尝试以某种统一的方式命名您的变量。下划线混合驼峰命名法让人头晕