2017-08-24 11 views
0

SQL Serverに接続するAzure関数を作成しようとしています。応答は実行されません。ログに返された正しいデータが表示されます。リクエストが完了した後、私がcontext.resを返す方法についてのアイデアはありますか?Azure関数httptriggerがSQL Serverからの応答を返さない

var rows = []; 

module.exports = function (context, req, res) { 
context.log('JavaScript HTTP trigger function processed a request.'); 

if(req.query.nfcID) { 
    connection.on('connect', function(err) { 
     request = new Request("select tagUID, ProductID, Active From Tags where TagUID = "+ req.query.nfcID, 
    function(err, rowCount, rows) { 
    if (err) { 
     context.log(err); 
    } else { 

     connection.close(); 
     context.log('rows: '+rowCount); 

    } 
}); 

request.on('row', function(columns) { 
    var row = {}; 
    columns.forEach(function(column) { 
     row[column.metadata.colName] = column.value; 
    }); 
    rows.push(row); 

    context.log(rows); 

    context.res = { 
      body: rows; 
     } 
}); 

connection.execSql(request); 
}); 

} 
else { 
    context.res = { 
     status: 400, 
     body: "Please provide the nfc id" 
    }; 
} 
context.done(); 
}; 

答えて

2

にコードを変更してください:あなたはcontext.resの値を設定した後context.done()への呼び出しが欠落している

var rows = []; 

module.exports = function(context, req, res) { 
    context.log('JavaScript HTTP trigger function processed a request.'); 

    if (req.query.nfcID) { 
     connection.on('connect', function(err) { 
      request = new Request("select tagUID, ProductID, Active From Tags where TagUID = " + req.query.nfcID, function(err, rowCount, rows) { 
       if (err) { 
        context.log(err); 
       } else { 

        connection.close(); 
        context.log('rows: ' + rowCount); 

       } 
      }); 

      request.on('row', function(columns) { 
       var row = {}; 
       columns.forEach(function(column) { 
        row[column.metadata.colName] = column.value; 
       }); 
       rows.push(row); 

       context.log(rows); 

       context.res = { 
        body: JSON.stringify(rows); 
       } 

       context.done(); 
      }); 

      connection.execSql(request); 
     }); 

    } else { 
     context.res = { 
      status: 400, 
      body: "Please provide the nfc id" 
     }; 

     context.done(); 
    } 


}; 
+0

恐ろしい!ありがとうございます –

+0

お手伝いしてうれしいので、あなたはそれを回答としてマークできますか? –

2

context.done()がなければ、関数の呼び出しはタイムアウトします。

関連する問題