我有两个问题。
首先,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
答案 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 }