我正在阅读文档并尝试找出连接池。
文档说池应该是长寿的,所以我创建了一个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($1, $2, $3, $4::decimal, $5::decimal, ST_SetSRID(ST_MakePoint($5::decimal, $4::decimal), $6))',
[
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 });
});
};
另外,我如何检查插入是否成功,以便在不知道插入是否成功的情况下如果没有错误就返回200成功?
答案 0 :(得分:1)
这是对的。
对于检查错误,您可以在回调中看到c("# (2014)\t\t\t\t\t\t2014", "#1 (2005)\t\t\t\t\t\t2005", "#1 (2009)\t\t\t\t\t\t2009",
"#1 (2010)\t\t\t\t\t\t2010", "#1 (2010/I) (V)\t\t\t\t\t\t2010",
"#1 (2010/II) (V)\t\t\t\t\t2010")
,如果没有返回错误,则表示插入成功。