#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: отклоненавторизованный:ложь };