node-mongodb Защита от потери данных веб-сокета

Я на стороне клиента API websocket, который использует http://socketcluster.io/ для своей публикации / подписки.

После аутентификации я получаю каждую секунду данные JSON через

SCsocket.on('authenticate', function(){
   var channel = SCsocket.subscribe('channel1');
   channel.watch(function(data){
      console.log(data); 
   });
});

формы

[
  {
      "product": "Product1",
      "price":   "10.0" 
  },
  {
      "product": "Product2",
      "price":   "15.0"  
  }
]

Вместо того, чтобы распечатывать данные, я сохраню их в базе данных Монго.

В случае, если некоторые данные не могут быть загружены, мне нужна какая-то сеть безопасности. Что-то, что позволяет мне загружать данные из веб-сокета в Mongo DB в ретроспективе.

Каковы лучшие практики для этого? Я надеюсь, что этот вопрос не слишком широк, я новичок в узле и Монго БД.

Спасибо!

1 ответ

Это пример того, как вы можете обрабатывать данные и сохранять их в Mongo. У меня не был запущен сервер Монго, так что вам нужно проверить, что сохранение действительно работает. Но принцип есть.

Не уверен, что вы имеете в виду под защитной сеткой, но я добавил в проверке, чтобы увидеть, определены ли данные, вам нужно больше проверять там для ваших конкретных случаев.

Дайте мне знать, если вам нужна помощь с чем-то конкретным.

SCsocket.on('authenticate', function () {

    // subscribe to channel 1
    var channel = SCsocket.subscribe('channel1');
    channel.watch(function (data) {
        // if there is any data
        // you should do more specific checks here
        if (Object.keys(data).length > 0) {

            // connect to mongo
            MongoClient.connect(url, function(err, db) {

                assert.equal(null, err);

                // insert data
                insertDocument(data, db, function() {
                    db.close(); // close db once insert
                });
            });
        } else {
            // handle invalid data
            console.log('data sent is invalid');
            console.log(data);
        }
    });
});


// insert into mongo
var insertDocument = function (data, db, callback) {

    // save into product
    db.collection('product').insertOne(
        // insert data sent from socket cluster
        data, function (err, result) {
        assert.equal(err, null);
        console.log("Inserted successfully into");
        console.log(result); // output result from mongo
        callback();
    });
};
Другие вопросы по тегам