【问题标题】:Node.js (TypeScript) Postgres client does not appear to run insert statement on Pool.query, and callback does not executeNode.js (TypeScript) Postgres 客户端似乎没有在 Pool.query 上运行插入语句,并且回调没有执行
【发布时间】:2021-04-03 03:14:49
【问题描述】:

希望这是一个最小的可行示例 ->

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 ($1, $2, $3, $4)",
    [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 语句返回 0 行。这是因为我在发布之前删除了从 pgAdmin 插入的行。对不起,红鲱鱼。

【问题讨论】:

  • 它是否在pool.connect 回调中工作? pool.on的回调被调用了吗?
  • @Michiel 对这两个问题都没有,我想这意味着问题出在连接上。虽然没有意义。我已经三重检查了凭据、端口,当然它正在我的机器上运行。有没有办法诊断 pg 客户端的身份验证问题?我认为这将在连接回调中,但也根本没有执行。
  • 安装的是什么版本的nodejs和pg?一周前,我从节点 12 更新到 14 后遇到了类似的问题,我也必须更新 pg。顺便说一句,可以在没有 express 的情况下制作一个最小的可行示例。
  • 更新pg或降级nodejs有用吗?
  • @Michiel 感谢您的跟进,我应该报告回来。更新 pg 解决了这个问题。如果您想发表评论作为答案,我会接受。

标签: node.js typescript postgresql express node-postgres


【解决方案1】:

尝试更新pg 模块。旧版本可能不适用于较新的 Nodejs 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多