node-mongodb 防止 websocket 数据丢失



我在websocket API的客户端,该API使用SocketCluster进行发布/订阅。

身份验证后,我每秒通过以下方式接收一次 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。

如果某些数据无法上传,我需要某种安全网。回想起来,它允许我将数据从 websocket 上传到 mongo db。

执行此操作的最佳做法是什么?我希望这个问题不要太宽泛,我是节点和mongo db的新手。

谢谢!

这是如何处理数据并将其保存到Mongo的示例。我没有运行 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();
});
};

最新更新