2013-05-05 79 views
0

我正在运行NginX,Node和Mongodb。而且我似乎无法从我正在运行的第二个应用程序访问相同的数据库。例如,我没有得到任何回报,当我做:无法从同一服务器上的子域访问MongoDB

collection.findOne({ 
    name: someName 
}, function(err, results){ 
    // Returns no errors or results. Just stops working. 
}); 

我可以访问数据库完全从我的第一个应用程序正常,但第二个。 这是我用来在两个应用程序中连接到数据库的代码。

Server = require('mongodb').Server, 
Db = require('mongodb').Db, 
db = new Db('database', new Server('localhost', 27017, { auto_reconnect: true }), { w: true }); 

任何人都知道问题可能是什么?

编辑:它是否与子域或端口有关?太多联系?

编辑2(详细信息):

我执行MongoDB与service mongodb start

在我/etc/mongodb.conf我有bind_ip = 127.0.0.1dbpath=/var/lib/mongodb(其余为默认)

在这两个我的应用我运行相同的代码来建立与数据库的连接,但只有第一个作品(我知道,因为我我能够从我的第一个应用程序中的数据库检索信息)。

这些应用程序在不同的端口上运行。第一个在端口1337上运行,第二个在3000上运行。

+0

您能否包含有关您的配置的所有信息?包括mongod配置,以及如何知道第一个应用程序的连接成功并且来自第二个应用程序的连接不成功? – 2013-05-05 18:48:34

+0

你能否检查你的mongod日志 - 这是真正的方法来知道你是否实际上成功连接 - 可能你没有得到任何数据,因为你可能会查询错误的数据库或错误的集合? – 2013-05-05 19:10:57

+0

我刚刚清理了我的日志并进行了检查。当我从我的第一个应用程序连接时,我得到连接日志。但在我的第二个应用程序,它只是说: '太阳5月5日23:15:58.342 [initandlisten]等待27017端口连接' 我很确定我正在查询正确的数据库/收集(通过代码复制和多次检查)。它可能与Nginx有关吗? – 2013-05-05 19:18:58

回答

0

您正在使用'localhost'作为连接到此服务器的主机名。

这意味着您将只能从运行该主机名的同一台机器上连接mongod

除非您的所有应用程序都与mongod在同一台服务器上运行,否则您需要更改连接代码以使用mongod服务器的实际主机名。

+0

你是什么意思的实际主机名?我禁用了'bind_ip',并使用我的服务器ip而不是'localhost',它仍然不能用于与mongod运行在同一服务器上的第二个应用程序。 – 2013-05-05 18:33:02

+0

你是如何禁用bind_ip的? mongod运行的确切选项是什么?这两个应用程序究竟在哪里运行? – 2013-05-05 18:47:22

+0

增加了一些更多信息! – 2013-05-05 19:01:16

相关问题