将db.open与MongoDB和Nodejs一起使用

时间:2012-05-06 11:21:17

标签: node.js mongodb

我有两个问题。

首先,MongoDB文档经常提到使用db.open()然后使用db.collection(),但我注意到即使没有先调用db.open().,我仍然可以使用api。这样做安全吗? 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

3 个答案:

答案 0 :(得分:4)

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

最好将已知的连接对象传递给mvc,确保在启动应用程序之前打开db。

答案 1 :(得分:1)

  

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

您应该重复使用db对象而不是多次打开它 - 对于集合对象应该这样做,因为与创建它们相关的成本。

答案 2 :(得分:0)

我使用的是javascript驱动程序,它使用的是“openCalled”#39; boolean属性直接在db对象之外。引用它就像

一样简单
if (!db.openCalled) { //open database }