我是否正确地进行了连接池?使用 node-postgres 库
Am I doing connection pooling correctly? Using node-postgres library
我正在阅读文档并尝试找出连接池。
文档说池应该长期存在,所以我创建了一个 config/db.js
文件,我在其中创建 pool
并导出它:
/* src/config/db.js */
const pg = require('pg');
const dbConfig = {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_DATABASE,
max: 25,
idleTimeoutMillis: 5000
};
const pool = new pg.Pool(dbConfig);
module.exports = {
pool
};
我有一堆路由和控制器。例如,我有 /markers
端点,它在控制器中有一些方法。 在控制器文件中,我从 config/db.js
导入池并使用它。可以吗?
const pool = require('../config/db').pool;
const create = function (req, res, next) {
const data = {
created_by: req.body.createdBy,
title: req.body.title,
description: req.body.description,
lat: req.body.lat,
lng: req.body.lng
};
pool.connect((err, client, done) => {
if (err) {
done();
// console.log(err);
return res.status(500).json({ success: false, data: err });
}
client.query(
'INSERT INTO markers(created_by, title, description, lat, lng, geography)\
values(, , , ::decimal, ::decimal, ST_SetSRID(ST_MakePoint(::decimal, ::decimal), ))',
[
data.created_by,
data.title,
data.description,
data.lat,
data.lng,
4326
],
function(err, res) {
done();
if (err) {
// console.log(err);
}
}
);
return res.status(200).json({ success: true });
});
};
此外,如何检查插入是否成功,这样我才不会在不知道插入是否成功的情况下 return 200 成功(如果没有错误)?
没错。
关于检查错误,你可以在检查if (err)
的回调中看到,如果没有错误是return,则表示插入成功。
我正在阅读文档并尝试找出连接池。
文档说池应该长期存在,所以我创建了一个 config/db.js
文件,我在其中创建 pool
并导出它:
/* src/config/db.js */
const pg = require('pg');
const dbConfig = {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_DATABASE,
max: 25,
idleTimeoutMillis: 5000
};
const pool = new pg.Pool(dbConfig);
module.exports = {
pool
};
我有一堆路由和控制器。例如,我有 /markers
端点,它在控制器中有一些方法。 在控制器文件中,我从 config/db.js
导入池并使用它。可以吗?
const pool = require('../config/db').pool;
const create = function (req, res, next) {
const data = {
created_by: req.body.createdBy,
title: req.body.title,
description: req.body.description,
lat: req.body.lat,
lng: req.body.lng
};
pool.connect((err, client, done) => {
if (err) {
done();
// console.log(err);
return res.status(500).json({ success: false, data: err });
}
client.query(
'INSERT INTO markers(created_by, title, description, lat, lng, geography)\
values(, , , ::decimal, ::decimal, ST_SetSRID(ST_MakePoint(::decimal, ::decimal), ))',
[
data.created_by,
data.title,
data.description,
data.lat,
data.lng,
4326
],
function(err, res) {
done();
if (err) {
// console.log(err);
}
}
);
return res.status(200).json({ success: true });
});
};
此外,如何检查插入是否成功,这样我才不会在不知道插入是否成功的情况下 return 200 成功(如果没有错误)?
没错。
关于检查错误,你可以在检查if (err)
的回调中看到,如果没有错误是return,则表示插入成功。