【问题标题】:Passing a Mongo connection to JQuery code via socket.io?通过 socket.io 将 Mongo 连接传递给 JQuery 代码?
【发布时间】:2013-11-19 14:08:08
【问题描述】:

我正在尝试在我的 node.js 网络应用程序中创建一个全局 MongoDB 连接,如下所示:

var MongoClient = require('mongodb').MongoClient;
var mconn = null;

MongoClient.connect('mongodb://myHost:27017/users', function(err, udb) {     //open connection to MongoDB db
    if (!err){
        mconn = udb;
    }
    else
        console.error("Could not connect to sql: ", err);
});

然后,我想通过 `socket.emit' 事件传递这个连接,如下所示:

io.sockets.on('connection', function(socket) {

    socket.on('updates', function(PEMSID){
         gps_helper.get_gps(PEMSID, conn, function(data){      //make initial query to GPS table for marker coordinates
            socket.emit('message', {message: data, mongoConnection: mconn});
         });
         intervalID = setInterval(function(){
             gps_helper.get_gps(PEMSID, conn, function(data){      //query GPS table for marker coordinates on an interval
                socket.emit('message', {message: data, mongoConnection: mconn});
             });
         }, 30000);
    });

这似乎不起作用,'mongoConnection' 值在另一边是空的。可以这样发送吗?

【问题讨论】:

  • 您想通过 node.js 中的套接字将活动对象传输到 Web 浏览器?

标签: javascript jquery node.js mongodb sockets


【解决方案1】:

这是不可能的:您通常不能序列化并因此传输不透明的数据类型,例如网络连接或文件句柄。

如果可能考虑安全风险:恶意客户端可以完全访问您的数据库。

您将不得不制作某种接口,您的客户端代码将某些消息发送到服务器,服务器执行适当的数据库操作并将结果发回(再次确保您不这样做接口过于通用,以至于恶意客户端代码可以对您的数据库执行随机查询)。

【讨论】:

  • 谷歌地图之类的东西,你能通过这种方式吗?
  • @gjw80 你指的是谷歌地图的哪一部分?
猜你喜欢
  • 2014-04-09
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多