#node.js
#node.js
Вопрос:
Я работаю над лямбда-скриптом, который вставляет данные файла S3 Excel в базу данных SQL Server.
Единственная проблема, с которой я сталкиваюсь, заключается в том, что мой цикл не дождался завершения выполнения моей базы данных.
Вот мой код :
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;
}
});
}
Есть идеи, как я могу с этим справиться?
Ответ №1:
Используйте библиотеку async для получения результата. Поскольку у меня нет настройки сервера базы данных, я пишу пример кода здесь с комментариями. В вашем случае вам следует использовать функцию водопада, которая ведет себя как синхронная функция.
Установить : 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
});
Пожалуйста, ознакомьтесь с документом async для получения дополнительной информации.
https://caolan.github.io/async/docs.html