Node.js未通过PG连接到Postgres服务器

时间:2020-09-04 10:30:47

标签: node.js postgresql

我有一个运行我的node.js代码的远程服务器以及一个postgres服务器。 当我从本地计算机连接到postgres服务器时,它可与CLI以及节点代码一起使用。但是,当我将相同的代码推送到服务器时,它会继续超时,并且不会连接到postgres服务器。这是代码段

const { Pool } = require("pg");
const conn = {
  user: process.env.DB_USER,
  host: process.env.DB_HOST,
  database: process.env.DB_NAME,
  password: process.env.DB_PASSWORD,
  connectionTimeoutMillis: 5000,
  port: parseInt(process.env.DB_PORT),
};
console.log(conn);
const pool = new Pool(conn);

app.post(
  "/api/v1/data/sync",
  asyncHandler(async (req, res) => {
    const { data } = req.body;

    try {
      const tasks = [];

      for (let i = 0; i < data.length; i++) {
        const query = {
          text:
            "INSERT INTO health_data(date, user_id, health_data) VALUES($1, $2, $3)",
          values: [
            data[i].date,
            data[i]["user_id"],
            data[i]["health_data"],
          ],
        };
        tasks.push(pool.query(query));
      }
      const results = await Promise.all(tasks);
      console.log("saved data");
      await pool.end();
      res.status(200).send("Data Saved");
    } catch (e) {
      console.log(e);
      res.status(500).send("error in saving data");
    }
  })
);

我尝试使本地和服务器的环境变量保持相同,代码在本地有效,但在服务器中无效。我在这里想念什么?虽然我也可以在服务器中使用具有相同凭据的psql。只是节点代码不起作用。

更新

我将模块从pg切换到pg-promise,并且相同的env变量在服务器中也起作用。使用pg模块的有效用户名/密码/ dbname有什么限制?

0 个答案:

没有答案