2017-07-25 4 views
0

Ich habe eine Azure-Funktion in der Azure-App erstellt, die von IOT Hub ausgelöst wird, und sie speichert empfangene Nachrichten in der SQL-Datenbank. aber es kann nicht verarbeiten, wenn es mehrere Nachrichten empfängt. Meine Funktion ist brüllen.So speichern Sie mehrere Nachrichten in Azure-Funktion JavaScript?

module.exports = function (context, iotHubMessage) { 

for (var i = 0; i < iotHubMessage.length; i++) { 

    var iotMsgObj = iotHubMessage[i]; 
    context.log('Message : ' + JSON.stringify(iotMsgObj)); 

    context.bindings.paraSession = JSON.stringify(iotMsgObj); //to save data in SQL database 

    context.done();   // will save first message only 
} 

// context.done();  // will save last message only 

}; 

wenn iotHubMessage Hub mehr JSON-Objekte hat, wird es Äther erste oder letzte Nachricht von iotHubMessage speichern wird in Datenbanktabelle speichern.

bitte rat was mache ich falsch?

Antwort

0

Ich habe nicht versucht, mit der SQL-Bindung, sondern arbeitet ein Array zurückkehr für andere Arten (z.B. queue):

module.exports = function (context, iotHubMessage) { 

    context.bindings.paraSession = []; 
    for (var i = 0; i < iotHubMessage.length; i++) { 
    var iotMsgObj = iotHubMessage[i]; 
    context.bindings.paraSession.push(JSON.stringify(iotMsgObj)); 
    } 

    context.done(); 
}; 
+0

das war nicht für SQL gearbeitet –

0

Mikhail richtig ist, wenn Daten in Tabelle Azure Lagerung sind zu speichern. Aber wenn Sie SQL-Datenbank verwenden, benötigen Sie das folgende Code-Snippet.

module.exports = function (context, iotHubMessage) { 

var tempArr = []; 

for (var i = 0; i < iotHubMessage.length; i++) { 
    var iotMsgObj = iotHubMessage[i]; 
    tempArr.push(iotMsgObj); 
} 

context.bindings.paraSession = tempArr; 
context.done(); 
}; 
Verwandte Themen