将IOT Hub消息发送到外部DB

时间:2017-10-13 10:16:32

标签: azure-eventhub azure-iot-hub

我有IoT集线器解决方案来自两个设备的消息,现在作为IoT Hub数据被删除了24小时,我需要将这些数据存储在我的MongoDB中,如何最好地实现这一点? 我在Node JS中编写了一个事件中心函数,它也可以工作,但数据永远不会出现在数据库中。

module.exports = function(context, mySbMsg) {
context.log('Message received: '+ JSON.stringify(iotHubMessage));
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb:/abc.abc.abc.abc:27017/XYZ';
MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("Database connected!");
db.collection("IoTData").insertOne(mySbMsg, function(err, res) {
if (err) throw err;
console.log("1 document inserted");
db.close(); });});
context.done();}; 

1 个答案:

答案 0 :(得分:0)

我已经测试了以下代码,它可以正常工作。当您测试功能应用时,您可以跟踪日志。

module.exports = function (context, IoTHubMessages) {
    context.log('Message received:' + IoTHubMessages);

    var MongoClient = require('mongodb').MongoClient;

    var url = '{{Your mongoDb connection string}}';
    MongoClient.connect(url, function(err, db) {

            if (err) throw err;

            context.log("Database connected!");

            db.collection("IoTData").insertOne({IoTHubMessages:IoTHubMessages}, function(err, res) {
                    if (err) throw err;

                    context.log("1 document inserted");
                });
            db.close(); 
        }
    );

    context.done();
};