3

我有两个问题。

首先,MongoDB 文档经常提到 using db.open()and then db.collection(),但我注意到即使没有先调用我仍然能够使用 apidb.open().这样做安全吗?api是内部调用的db.open()吗?

http://mongodb.github.com/node-mongodb-native/api-generated/db.html#collection

其次,db对象中是否有指定是否db.open()被调用的参数?如果没有,我怎么才能知道是否db.open()被调用?

原因是因为我已经构建了几个与 mongo 通信的函数,但是当一些函数相互交互时,我得到了数据库无法多次“打开”的错误。

编辑

db我在对象中找到了这个参数。看来这是一个布尔值确定使用db.open()但我不是 100% 确定,有人知道吗?db.serverConfig.internalMaster

4

3 回答 3

4

如果您需要知道一个 db 对象是否已连接,您可以检查 db._state == 'connected' 或 db.serverConfig.isConnected()。

您可能最好将已知的连接对象实际传递给您的 mvc,确保在启动应用程序之前打开数据库。

于 2012-05-07T07:37:38.627 回答
1

原因是因为我已经构建了几个与 mongo 通信的函数,但是当一些函数相互交互时,我得到了数据库无法多次“打开”的错误。

您应该重用 db 对象,而不是多次打开它 - 对集合对象也应该这样做,因为创建它们会产生成本。

于 2012-05-06T22:07:46.940 回答
0

我正在使用 javascript 驱动程序,它直接使用 db 对象的“openCalled”布尔属性。引用它很简单

if (!db.openCalled) { //open database }
于 2013-10-24T20:10:33.790 回答