我是否正确地进行了连接池?使用 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,则表示插入成功。