gpt4 book ai didi

node.js - 快速保持连接打开?

转载 作者:搜寻专家 更新时间:2023-11-01 00:25:00 24 4
gpt4 key购买 nike

我正在使用 Node js、express 和 postgresql 作为后端。这是我用来制作休息 API 的方法:

exports.schema = function (inputs, res) {
var query = knex('schema')
.orderBy('sch_title', 'asc')
.select();

query.exec(function (err, schemas) {
if(err){
var response = {
message: 'Something went wrong when trying to fetch schemas',
thrownErr: err
};
console.error(response);
res.send(500, response);
}
if(schemas.length === 0){
var message = 'No schemas was found';
console.error(message);
res.send(400, message);
return;
}
res.send(200, schemas);
});
};

它可以工作,但是过了一会儿 postgres 记录了一个错误并且它不再工作了:

sorry, too man clients already

我是否需要以某种方式关闭每个请求?在 express 文档中找不到任何关于此的内容。有什么问题吗?

此错误仅发生在生产服务器上。不在开发机器上。

更新该应用程序仅在一个“模块”中制动。该应用程序的其余部分工作正常。所以只有一些查询会出错。

最佳答案

只需为您的整个应用程序保持一个连接打开。 docs shows an example如何做到这一点。

此代码进入您的 app.js...

var Knex  = require('knex');
Knex.knex = Knex.initialize({
client: 'pg',
connection: {
// your connection config
}
});

当你想在你的 Controller /中间件中查询时......

var knex = require('knex').knex;

exports.schema = function (req, res) {
var query = knex('schema')
.orderBy('sch_title', 'asc')
.select();
// more code...
};

如果您将 Knex.initialize 放在 app.useapp.VERB 中,它会针对每个请求重复调用,因此您最终会多次连接到 PG。

在大多数情况下,您不需要为每个 HTTP 请求都执行打开+查询+关闭。

关于node.js - 快速保持连接打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23697843/

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