我正确地进行连接池吗?使用node-postgres库

时间:2017-02-13 02:04:13

标签: node.js postgresql node-postgres

我正在阅读文档并尝试找出连接池。

文档说池应该是长寿的,所以我创建了一个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成功?

1 个答案:

答案 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") ,如果没有返回错误,则表示插入成功。