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