Как устранить ошибку облачной функции с помощью postgresql и облачного sql сообщения об ошибке «table_name» не существует - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь запросить таблицу с именем «client» в моей базе данных Cloud SQL. Я использую облачные функции для доступа к Cloud SQL. Когда я делаю запрос, я получаю следующую ошибку:

relation "client" does not exist

Я хочу перечислить всех клиентов в моей таблице. Когда я запускаю ту же команду из psql в облачной оболочке, я получаю правильный результат:

postgres=> SELECT * FROM client LIMIT 2 ;
 numcli |    nom    |   prenom   |    ville    |    tel
--------+-----------+------------+-------------+------------
      0 | Ernaut    | Bernadette | marseille   | 0296645394
      1 | Christian | Louis      | montpellier | 0417103362
(2 rows)
postgres=>

Но следующий код в Cloud Functions обнаруживает ошибку:

import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
import * as pg from "pg";

export const sendMoney = functions.https.onCall(async (data, context) => {
  console.log(data);
  if (!context.auth || !context.auth.uid)
    throw new functions.https.HttpsError(
      "unauthenticated",
      "L'action est refusée car aucun utilisateur n'est connecté"
    );

  const pgConfig = {
    max: 1,
    user: "postgres",
    password: "******",
    database: "pay",
    host: "/cloudsql/******:us-central1:****"
  };
  let pgPool;
  if (!pgPool) {
    pgPool = new pg.Pool(pgConfig);
  }
  return pgPool
    .query("SELECT * FROM client LIMIT 2")
    .then(result => {
      console.log(" \n RESULT \n");
      console.log(result);
      };
    })
    .catch(e => {
      console.log(e);
    });
});

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

Проблема заключалась в том, что я подключался к базе данных по умолчанию (postgres) при подключении из Cloud Shell.При подключении из облачных функций я подключался к базе данных pay, в которой не было таблиц.

Я обновил эту конфигурацию:

  const pgConfig = {
        max: 1,
        user: "postgres",
        password: "******",
        database: "pay",
        host: "/cloudsql/******:us-central1:****"
      };

Для подключения к "по умолчанию"вместо базы данных:

const pgConfig = {
    max: 1,
    user: "postgres",
    password: "******",
    database: "postgres",
    host: "/cloudsql/******:us-central1:****"
  };

И тогда все работало правильно.

0 голосов
/ 29 апреля 2019

Подтвердите данные: SELECT * FROM name--;Проверьте URL на предмет каких-либо сомнений относительно того, как подключиться к облачному SQLhttps://cloud.google.com/sql/docs/postgres/quickstart

...