我正在研究将S3 Excel文件数据插入SQL Server数据库的lambda脚本。
我遇到的唯一问题是我的循环没有等到数据库执行完成。
这是我的代码:
for(var key in data)
{
var proj = data[key].project_id;
request.input('proj_id', sql.Int, proj);
request.execute('ImportProject', function (err, recordset)
{
if(err)
{
callback(err);
sql.close();
}
else
{
console.log('Project Insert : ', proj_id);
sql.close();
context.succeed;
}
});
}
任何想法我该如何处理?
答案 0 :(得分:0)
使用异步库获得结果。由于我没有数据库服务器设置,因此我在此处编写示例代码并附带注释。 在您的情况下,应使用行为类似于同步功能的瀑布功能。
安装:npm install --save async
async.waterfall([
function(callback) {
// database connection in this function if sucessfull connection happend call the callback
// which contains the first parameter as error and others are input to next function
callback(null, 'connection');
},
function(connection, callback) {
//loop here, and finally callback after success
callback(null, 'done');
}
], function (err, result) {
// result now equals 'done'
// final calculation here
});
请遵循异步文档以获取更多信息。 https://caolan.github.io/async/docs.html