Node.js (TypeScript) Postgres 客户端似乎没有 运行 在 Pool.query 上插入语句,并且回调没有执行
Node.js (TypeScript) Postgres client does not appear to run insert statement on Pool.query, and callback does not execute
希望这是一个最小的可行示例 ->
routes.ts
import express, { Request, Response } from "express";
import { QueryResult, Pool } from "pg";
const pool = new Pool({
user: process.env.DOCKER_USER,
host: "localhost",
database: process.env.DOCKER_DB,
password: process.env.DOCKER_PASSWORD,
port: 5432,
});
const router = express.Router();
router.post("/log/hub", (req: Request, res: Response) => {
console.log("Made it here!");
const username = "PLACEHOLDER";
const json = { a: "b" };
const now = new Date();
const cachedId = "12345";
pool.query(
"INSERT INTO data_actions (username, json_payload, cache_id, action_timestamp) VALUES (, , , )",
[username, json, cachedId, now],
(error: Error, results: QueryResult) => {
if (error) {
throw error;
}
res.status(201).send(results);
}
);
});
export = router;
echo $DOCKER_USER,$DOCKER_DB,$DOCKER_PASSWORD
生产
docker, docker, docker
我已在客户端中验证这些值与上面打印的值匹配,并且它们与在 Docker 容器中为 Postgres 设置的凭据匹配。我可以使用 pgAdmin4 连接到端口 5432 上的数据库并查看我期望的数据库,它看起来像这样:
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+--------
public | data_actions | table | docker
(1 row)
SELECT * FROM data_actions;
产生
username | json_payload | cache_id | action_timestamp
----------+--------------+----------+------------------
(0 rows)
我能够到达 localhost:5000 处的快速路由器端点,因此下游的一切都不是问题。我认为问题在于我如何使用 pg
。这里有什么明显的地方吗?我有一种感觉,我遗漏了一些小东西,我正在用头敲击键盘,试图找出问题所在。
EDIT:关系显示 1 行,其中 select 语句 returns 0 行。这是因为我在发帖之前删除了从 pgAdmin 插入的行。对不起,红鲱鱼。
尝试更新 pg
模块。旧版本可能不适用于较新的 Nodejs 版本。
希望这是一个最小的可行示例 ->
routes.ts
import express, { Request, Response } from "express";
import { QueryResult, Pool } from "pg";
const pool = new Pool({
user: process.env.DOCKER_USER,
host: "localhost",
database: process.env.DOCKER_DB,
password: process.env.DOCKER_PASSWORD,
port: 5432,
});
const router = express.Router();
router.post("/log/hub", (req: Request, res: Response) => {
console.log("Made it here!");
const username = "PLACEHOLDER";
const json = { a: "b" };
const now = new Date();
const cachedId = "12345";
pool.query(
"INSERT INTO data_actions (username, json_payload, cache_id, action_timestamp) VALUES (, , , )",
[username, json, cachedId, now],
(error: Error, results: QueryResult) => {
if (error) {
throw error;
}
res.status(201).send(results);
}
);
});
export = router;
echo $DOCKER_USER,$DOCKER_DB,$DOCKER_PASSWORD
生产
docker, docker, docker
我已在客户端中验证这些值与上面打印的值匹配,并且它们与在 Docker 容器中为 Postgres 设置的凭据匹配。我可以使用 pgAdmin4 连接到端口 5432 上的数据库并查看我期望的数据库,它看起来像这样:
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+--------
public | data_actions | table | docker
(1 row)
SELECT * FROM data_actions;
产生
username | json_payload | cache_id | action_timestamp
----------+--------------+----------+------------------
(0 rows)
我能够到达 localhost:5000 处的快速路由器端点,因此下游的一切都不是问题。我认为问题在于我如何使用 pg
。这里有什么明显的地方吗?我有一种感觉,我遗漏了一些小东西,我正在用头敲击键盘,试图找出问题所在。
EDIT:关系显示 1 行,其中 select 语句 returns 0 行。这是因为我在发帖之前删除了从 pgAdmin 插入的行。对不起,红鲱鱼。
尝试更新 pg
模块。旧版本可能不适用于较新的 Nodejs 版本。