打开重复选项卡时“服务器套接字关闭”

时间:2015-07-07 00:28:15

标签: node.js mongodb sockets express

我无法弄清楚这个问题。

我有一个Node / Express服务器,我正在使用MongoDB。一切都很好,通常。它有用户帐户,登录和注册系统正常运行。我甚至测试了注册并登录手机(我使用Gulp作为我的构建工具)。

我现在遇到的问题是,每当我尝试在重复的标签页中注册时(如同一个注册/登录页面上的另一个标签页),我都会收到错误:

服务器代码:

//check for existing account using the given email
User.findOne({ "email" : email }, function(err, doc) {
    if(err) throw err;
    //if no email is found proceed with account creation
    if(!doc) {
        //snip
    } else {
        //if an account is found re-render the page with the error message
        //and close the db
        res.render(...);
        dbase.close();
    }
});

但是当我打开相同的标签时,我收到此错误:

MongoError: server localhost:27017 socket closed.

我已经多次测试过了。没有重复的标签时,它可以正常工作。当计算机上的标签仍然打开时,它可以在我的手机上运行。我检查了四重检查以确保我没有太快关闭数据库。字面上只有当我打开相同的选项卡时才会出现此错误。当我提交表格时,他们都开始加载(或尝试,而不是)。这是一个非常明确的截图:

http://i.gyazo.com/ad89b3df03ba9d44f203563f922893da.png

同样,在收到来自数据库的响应之前,我已经多次检查过我没有关闭数据库,而不是在响应句柄之外。

我在请求处理中遗漏了什么?如何防止它向两个标签发送数据并且(貌似)两次执行相同的操作?

提前致谢。

1 个答案:

答案 0 :(得分:0)

感谢Louis93,我更清楚地了解如何构建我的服务器数据库查询。

  

必须重复使用连接!更多信息:https://stackoverflow.com/a/14607887/765409   即不要关闭它