Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 将db.open与MongoDB和Nodejs一起使用_Node.js_Mongodb - Fatal编程技术网

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

Node.js 将db.open与MongoDB和Nodejs一起使用,node.js,mongodb,Node.js,Mongodb,我有两个问题 首先,MongoDB文档经常提到使用db.open(),然后使用db.collection(),但我注意到,即使不先调用db.open(),我仍然能够使用api。这样做安全吗?api是否在内部调用db.open() 其次,db对象中是否有一个参数指定是否调用了db.open()?如果没有,我怎样才能知道是否调用了db.open() 原因是我构建了几个与mongo通信的函数,但当其中一些函数相互交互时,我会出现错误,数据库无法多次“打开” 编辑 我在db对象中找到了这个参数。这似乎

我有两个问题

首先,MongoDB文档经常提到使用
db.open()
,然后使用
db.collection()
,但我注意到,即使不先调用
db.open(),我仍然能够使用api。
这样做安全吗?api是否在内部调用db.open()

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

原因是我构建了几个与mongo通信的函数,但当其中一些函数相互交互时,我会出现错误,数据库无法多次“打开”

编辑

我在
db
对象中找到了这个参数。这似乎是决定db.open()用法的一个布尔值,但我不是100%确定,有人知道吗<代码>db.serverConfig.internalMaster

原因是我构建了几个与mongo通信的函数,但当其中一些函数相互交互时,我会出现错误,数据库无法多次“打开”


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

如果您需要知道db对象是否已连接,可以检查db。\u state==“connected”或db.serverConfig.isConnected()


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

我使用的是javascript驱动程序,它直接使用db对象的“openCalled”布尔属性。引用它就像

if (!db.openCalled) { //open database }

是的,我熟悉这两种语句,但我的代码是mvc类型的结构。因此,在我实际调用函数的控制器中,它对
db.open()
db.collection()
一无所知,只知道
doThis()
。这就是为什么我想知道一种方法来确定是否调用了
db.open()
,这样我就可以正确地嵌套控制器函数了。太好了,谢谢!如果我不调用
db.open()
db.close()
,也可以吗?这种情况会自行发生吗?似乎api仍然可以在不调用
db.open()
的情况下工作。