gpt4 book ai didi

node.js - Node 通用池错误[db对象已连接,无法多次调用open]

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:30 25 4
gpt4 key购买 nike

我只是尝试使用node pool在我的博客应用程序中,这是我的代码:

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
});
})

由于我为池设置了 min 属性(这里是 3),当我刷新页面大约 3 次后,页面崩溃并警告: db object alreadyconnecting, open Cannot be Called多次

当我将 min 设置为 5 时,刷新大约 5 次后,它又崩溃了。

这是为什么?

提前致谢

最佳答案

每当您从池中获取实例时,都会检查是否有空闲实例并返回它。如果不是免费实例,或者没有获取实例的最小配置,它将使用 create 函数创建一个新实例。

因此,在您的情况下,3次后(当min=3时)它将返回您之前使用过的实例。这意味着您将第二次运行 mongodb.open。

您的 mongodb.open(function (error, db) 应该位于池的创建函数处。

关于node.js - Node 通用池错误[db对象已连接,无法多次调用open],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25055849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com