ОТНОШЕНИЯ «клиенты» не существует, но фактически выходит

#node.js #postgresql

#node.js #postgresql

Вопрос:

я пытаюсь создать простой веб-сайт, но при попытке вставить в свою базу данных Heroku он говорит, что мое отношение (таблица) не существует, но на самом деле существует!!..Я подключаюсь через database_url, предоставленную Heroku, и когда я подключаюсь через командную строку и вставляю новые строки, они добавляются, и я вижу их таблицу и данные, но когда я пытаюсь вставить данные каждый раз, когда я нажимаю на форму, появляется ошибка, как будто таблицы с таким именем не было..

 const express = require('express'); app = express(); require('dotenv').config() var sslRedirect = require("heroku-ssl-redirect").default; var compression = require('compression'); const { Client } = require('pg'); const client = new Client({  connectionString: process.env.DATABASE_URL, })  //MIDDLEWARE app.set("port",process.env.PORT || 3000); app.set("view engine", "ejs"); app.use(sslRedirect()); app.disable('x-powered-by'); app.use(compression()); app.use(express.static("public")); app.use(express.json()); app.use(  express.urlencoded({  extended:false  }) ); app.use const errorController = require('./controllers/errorController'); //const middleware = require('./controllers/middleware')  //ROUTES  app.get('/',(req,res,next) =gt; {  res.render('test') }); app.post('/thanks', async (req, res) =gt; {    data = {  name : req.body.name,  email : req.body.email,  service: req.body.service,  message: req.body.message};    const text ='INSERT INTO customers(name,email,service,message) VALUES($1, 2$, 3$, 4$) RETURNING *;' const values = [data.name, data.email, data.service, data.message];    client.connect()  try {  const res = await client.query(`INSERT INTO customers (name,email,service,message) VALUES(${data.name},${data.email},${data.service},${data.message}) RETURNING *;`);  console.log(res.row[1])  client.end()    }catch (err) {  console.log(err.stack)  client.end()  }  res.render('thanks') }) app.get('/contact',(req,res) =gt; {  res.render('contact') })  app.get("/services" , (req,res) =gt; {  res.render('services') })  app.get("/about" , (req,res) =gt; {  res.render("about") })  app.get('/maysspabeauty.com/contact/*' , (req , res) =gt; {  res.render('contact') })   app.use(errorController.pageNotFoundError); app.use(errorController.internalServerError) app.listen(app.get("port"), () =gt; {  console.log(`server running at http://localhost:${app.get("port")}`); });  

вот скриншот изображения ошибки

Комментарии:

1. Пожалуйста, разместите свой код в вопросе, а не ссылку на его изображение.

2. Вы уверены, что ваш код подключается к правильной (той же) базе данных, что и вы?

3. да, я подключен , через database_url, предоставленный Heroku, и когда я использую конфигурацию Heroku в командной строке, я могу проверить, что URL-адрес такой же, как при доступе к базе данных через их сайт и просмотре параметров конфигурации, спасибо за ответ

4. В какой схеме вы создали customers ? Находится ли он в search_path режиме подключения к клиенту?

5. схема, которую я использовал, — это та, которую Postgres создает для вас! общедоступная схема и, я полагаю, мой путь поиска будет моим database_url? что они предоставили мне

Ответ №1:

Решил эту проблему…. похоже, моя проблема заключалась в том, что я просто использовал heroku hobby-dynos, и они НЕ предназначены для использования в производстве….после обновления dynos он просто выдал мне эту ошибку (без записи pg_hba.conf для хоста), которую я исправил, просто используя ssl»{ ssl: отклоненавторизованный:ложь };