Node.js (TypeScript) Клиент Postgres не выполняет оператор вставки в Pool.query, а обратный вызов не выполняется

Надеюсь, это минимально жизнеспособный пример ->

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.info("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. Я могу подключиться к базе данных через порт 5432 с помощью pgAdmin4 и просмотреть ожидаемую базу данных, которая выглядит следующим образом:

             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)

Я могу подключиться к конечной точке экспресс-маршрутизатора на локальном хосте: 5000, поэтому все, что находится ниже по течению, не является проблемой. Я думаю, что проблема кроется где-то в том, как я использую pg. Выделяется ли здесь что-нибудь очевидное? У меня такое чувство, что я пропускаю что-то маленькое, и я бьюсь головой о клавиатуру, пытаясь понять, что происходит не так.

Обновлено: отношение показывает 1 строку, где оператор select возвращает 0 строк. Это потому, что я удалил строку, которую я вставил из pgAdmin, прежде чем опубликовать здесь. Извините за отвлекающий маневр.

Работает ли это в обратном вызове pool.connect? Вызывается ли обратный вызов pool.on?

Michiel 24.12.2020 21:13

@Michiel Нет на оба вопроса, что, я думаю, означает, что проблема связана с соединением. Хотя это не имеет смысла. Я трижды проверил учетные данные, порт и, конечно же, он работает на моей машине. Есть ли способ диагностировать проблемы аутентификации с помощью клиента pg? Я бы подумал, что это будет в обратном вызове подключения, но это тоже не выполняется.

orpheus 24.12.2020 21:27

Какая версия nodejs и pg установлена? Неделю назад у меня была похожая проблема после обновления с узла 12 до 14, пришлось обновить и pg. Кстати, минимальный жизнеспособный пример можно сделать без экспресса.

Michiel 25.12.2020 09:30

Сработало ли обновление pg или понижение версии nodejs?

Michiel 30.12.2020 10:51

@Michiel Спасибо за продолжение, я должен был отчитаться. Обновление pg решило проблему. Если вы хотите опубликовать комментарий в качестве ответа, я приму его.

orpheus 30.12.2020 19:55
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
941
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте обновить модуль pg. Старые версии могут не работать с более новыми версиями Nodejs.

Другие вопросы по теме