首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node-防止websocket数据丢失的mongodb防护

node-防止websocket数据丢失的mongodb防护
EN

Stack Overflow用户
提问于 2017-07-23 02:29:18
回答 1查看 251关注 0票数 3

我在websocket API的客户端,它使用SocketCluster作为发布/订阅。

经过身份验证后,我每隔一段时间通过

代码语言:javascript
复制
SCsocket.on('authenticate', function(){
   var channel = SCsocket.subscribe('channel1');
   channel.watch(function(data){
      console.log(data); 
   });
});

表单的

代码语言:javascript
复制
[
  {
      "product": "Product1",
      "price":   "10.0" 
  },
  {
      "product": "Product2",
      "price":   "15.0"  
  }
]

我不会打印数据,而是将其保存到mongo db中。

以防某些数据无法上传,我需要某种安全网。它允许我在retrospect中将数据从websocket上传到mongo db。

实现这一目标的最佳实践是什么?我希望这个问题不是太宽泛,我对node和mongo db都是新手。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-07-27 17:35:28

这是一个如何处理数据并将其保存到Mongo中的示例。我没有运行mongo服务器,因此您必须检查保存是否有效。但原则是存在的。

不确定你所说的安全网是什么意思,但我在检查中添加了查看数据是否已定义,您应该针对自己的特定情况进行更多检查。

如果你有什么需要帮助的,请告诉我。

代码语言:javascript
复制
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();
    });
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45257862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档