节点通用池错误

我只是试图在我的博客应用程序中使用节点池 ,这里是我的代码:

db.js

module.exports = function () { return new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT), {safe: true}); } 

post.js

 var Db = require('./Db'); var pool = poolModule.Pool({ name : 'mongoPool', create : function(callback) { var mongodb = Db(); callback(null, mongodb); }, destroy : function(mongodb) { mongodb.close(); }, max : 100, min : 3, idleTimeoutMillis : 30000, log : true }); 

用法

 pool.acquire(function (error, mongodb) { mongodb.open(function (error, db) { pool.release(mongodb) // do something }); }) 

由于我设置池的最小属性(这里是3),当我刷新页面大约3次后,页面分解并警告:db对象已经连接,打开不能被多次调用

当我把分数设置为5,然后我刷新了大约5次后,再次分解。

为什么是这样?

提前致谢

当你从池中获取一个实例时,检查是否有一个空闲的实例并返回它。 如果这不是一个空闲的实例,或者它没有得到实例的最小configuration,它将使用create函数创build一个新configuration。

所以在你的情况下,3次后(最小= 3),它会返回给你一个你以前使用的实例。 这意味着你要第二次运行它mongodb.open。

你的mongodb.open(函数(错误,数据库)应该在池的创buildfunction。