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();
});
};