IotハブからSQLデータベースにデータを保存するためにAzure関数を作成しました。これで、例外とエラーをAzureストレージテーブルに保存したいので、try{ } catch(err){}
を追加しましたが、それは機能しません。私を修正してください。ありがとう!Azure関数jsからException/Errorを格納する方法は?
私の機能がここ
module.exports = function (context, iotHubMessage) {
try {
var strMsg = JSON.stringify(iotHubMessage);
context.log('Message received: ' + strMsg);
var ob1 = { "employee_idw": 444, "last_name": "Teller", "first_name": "Saara", "age": 34, "salary": 87000 };
//I misspelled 'employee_idw' to generate error
var ob2 = { "employee_id": 555, "last_name": "Teller", "first_name": "Saara", "age": 31, "salary": 87000 };
ob1.EventProcessedUtcTime = new Date;
ob2.EventProcessedUtcTime = new Date;
var arr = [];
arr.push(ob1);
arr.push(ob2);
context.bindings.outputTable = arr;
context.done();
} catch (err) {
context.log('CCC Error' + err); // even can not see this message in log
context.bindings.error= { "partitionKey": partitionKey, "rowKey": rowKey, "data": err };
}
};
であるが、これは
{
"bindings": [
{
"type": "eventHubTrigger",
"name": "myEventHubMessage",
"path": "myeventhub",
"consumerGroup": "$Default",
"connection": "PBCorIOTHub_events_IOTHUB",
"cardinality": "many",
"direction": "in"
},
{
"type": "apiHubTable",
"name": "outputTable",
"dataSetName": "default",
"tableName": "employees",
"connection": "sql_SQL",
"direction": "out"
},
{
"type": "table",
"name": "error",
"tableName": "dddtTest",
"connection": "cccteststr_STORAGE",
"direction": "out"
}
],
"disabled": false
}
なぜスペルミスのプロパティが関数内でエラーを生成するのですか?テーブルストレージの場合、2番目の出力バインディングが必要です。これを 'catch'ブロックの中に割り当てます。 – Mikhail
'context.bindings.outputTable = arr'これは私のSQLテーブルですので、エラーが発生し、このエラーをAzureストレージテーブルに保存することはできません。 –
なぜエラーが発生しますか? 1つのJS varを別のものに割り当てることです。 SQLへの書き込みは、関数が終了した後で非同期に発生します。 – Mikhail