Next. js API-маршруты с pg-обещанием - PullRequest
1 голос
/ 22 февраля 2020

Я использую превосходную библиотеку pg-promise в приложении Next. js для взаимодействия с базой данных Postgres, развернутой в AWS. В частности, я использую функцию маршрутизации API, в которой папки внутри /pages/api сопоставляются с соответствующими конечными точками. Это значительно упростило мой код и позволило мне удалить пользовательский файл server.js. Проблема в том, что pg-promise выдает это предупреждение:

WARNING: Creating a duplicate database object for the same connection.

Автор рассмотрел это раньше , но, несмотря на следование совету, предупреждение сохраняется.

Я инициализирую соединение с базой данных только один раз, в database.js:

const pgp = require('pg-promise')();

const connection = { ... };

const db = pgp(connection);

module.exports = db;

И затем передаю его моим API в pages/api, в данном случае users.js:

import db from ‘../database.js;

export default async function handler(req, res) {
  try {
    const users = await db.any('SELECT * FROM table);
    res.json(users)
  } catch (error) {
    res.status(error.status || 500).end(error.message)
  }
}

Данные в конечном итоге попадают в getInitialProps вызов.

Что вызывает предупреждение? Есть ли шаблон, который я пропускаю, или недостаток дизайна в моей обработке объекта подключения? Я экспериментировал с различными конфигами и промежуточным программным обеспечением, но предупреждение остается.

...