我使用以下代码将JSON字符串转换为Azure表存储中的列。
'use strict';
// This function is triggered each time a message is received in the IoT hub.
// The message payload is persisted in an Azure storage table
module.exports = function (context, iotHubMessage)
{
context.log('Message received: ' + JSON.stringify(iotHubMessage));
var date = Date.now();
var deviceData = {
"partitionKey": Math.floor(date / (24 * 60 * 60 * 1000)) + '',
"rowKey": date + '',
};
Object.keys(iotHubMessage).forEach(function(key) {
deviceData[key] = iotHubMessage[key];
});
context.bindings.outputTable = deviceData;
context.done();
};
这仍然显示失败如下:
2017-10-27T06:27:02.134执行功能时出现异常: Functions.fnConvertJsonToTable。 Microsoft.Azure.WebJobs.Host:错误 在函数返回后处理参数_binder: Microsoft.WindowsAzure.Storage:批处理中的元素0返回了一个 意外的响应代码。 2017-10-27T06:27:02.196功能完成 (失败,Id = 7870d04d-4cc2-4474-8ffa-d67add613f6c,持续时间= 145ms)
请建议正确的解决方案。 提前谢谢。
答案 0 :(得分:0)
我尽可能地重新创建了这个,并没有收到任何问题或错误;
module.exports = function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
if (req.query.name || (req.body && req.body.name)) {
var message = req.body;
context.log(message);
var
date = Date.now(),
key = Math.floor(date / (24 * 60 * 60 * 1000));
context.log(date);
context.log(key);
var tableData = {
"partitionKey": Math.floor(date / (24 * 60 * 60 * 1000)),
"rowKey": date
};
Object.keys(message).forEach(function(key) {
tableData[key] = message[key];
});
context.log(tableData);
context.bindings.outputTable = tableData;
context.log("Output Documents Bound");
context.res = {
status: 200, /* Defaults to 200 */
body: message
};
}
else {
context.res = {
status: 400,
body: "Please pass a name on the query string or in the request body"
};
}
context.done();
};
我注意到你在deviceData中的每个变量的末尾都有一个尾随的“+”',但即使是那些我没有得到错误。
这让我想知道您的Azure表存储输出绑定是否有问题。