mongodb的open和close疑问
在操作mongodb的时候经常遇到
Error: db object already connecting, open cannot be called multiple times
这种问题。 个人找到了原因,是因为上一次 mongodb.open(), 还没有来得及 mongodb.close() 就开始了下一次 mongodb.open()
我的疑问是这样的问题一般怎么处理,看到有人说打开一次就不关闭了,一直保持开始状态, 有人又说一直打开不好。
求教~
11 回复
话说,node 是单线程的...你打开了...如果要一直跑的...也没必要关闭啊...
除非你是不需要一直运行的.才需要关闭 -打开
记住node 是单线程的...以前你用别的语言,说打开了,不关闭会导致内存泄露...但是,在node不存在这种情况...
@xiao2013 重新连接时mongodb.open(),如果上一个连接没有关闭就会报错~报 Error: db object already connecting, open cannot be called multiple times
这个我也遇到过,后来简单的看了一下mongodb的node驱动,发现一种简单的解决办法:
var mongodb = require('./db');
if(!mongodb.openCalled)
mongodb.open(function(err, db){...});
else
mongodb.collection('xxx', function(err, collection){...});
这里有一个openCalled属性,可以用它来检测数据库是否已經被打开。
如果已经打开,则直接使用,否则再open。