等待直到SQL Server请求结束

时间:2019-03-02 15:19:28

标签: node.js

我正在研究将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; 
         }
     });                        
  }

任何想法我该如何处理?

1 个答案:

答案 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