2013-05-05 82 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

相關問題