我在websocket API的客户端,它使用SocketCluster作为发布/订阅。
经过身份验证后,我每隔一段时间通过
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中。
以防某些数据无法上传,我需要某种安全网。它允许我在retrospect中将数据从websocket上传到mongo db。
实现这一目标的最佳实践是什么?我希望这个问题不是太宽泛,我对node和mongo db都是新手。
谢谢!
发布于 2017-07-27 17:35:28
这是一个如何处理数据并将其保存到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();
});
};https://stackoverflow.com/questions/45257862
复制相似问题