我有一个运行我的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有什么限制?