У меня есть опыт работы с веб-разработкой, но на всех сайтах, которые я создал на сегодняшний день, есть встроенные базы данных. Это моя первая попытка создать сайт с не встроенной базой данных.
Я создал скелетный сайт, используя NodeJS и Express рамки. Он принимается Heroku . До того, как я попытался добавить базу данных, приложение, казалось, работало хорошо, как и ожидалось.
Однако теперь, когда я добавил в приложение файл scraper.js
, все, что я получаю, это уведомление о том, чтоприложение упало. Содержимое этого файла:
const Finaliser = require("./finaliser.js");
const { Client } = require("pg");
const client = new Client({
connectionString: process.env.DATABASE_URL,
ssl: true,
});
class Scraper
{
constructor()
{
this.finaliser = new Finaliser();
}
fetchAsIs(req, res)
{
var data, columns, rows;
var tableName = req.params.id;
var that = this;
var queryString = "SELECT * FROM "+tableName+";";
client.connect();
client.query(queryString, (err, extract) => {
if(err) throw err;
client.end();
console.log(extract);
that.finaliser.protoRender(req, res, "asis",
{ title: tableName });
});
}
};
module.exports = Scraper;
Дополнительные сведения:
- Запуск
heroku logs --tail
дает:
2019-10-23T15:35:50.281517+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=harvesthub.herokuapp.com request_id=caadba91-9b2d-4525-9c9c-19c34733073d fwd="194.33.13.237" dyno= connect= service= status=503 bytes= protocol=https
2019-10-23T15:35:50.588155+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=harvesthub.herokuapp.com request_id=28b7948f-ff59-44f0-867a-f3ce7ede86cc fwd="194.33.13.237" dyno= connect= service= status=503 bytes= protocol=https
- Я думаю, что база данных настроена правильно. Запуск
heroku addons --app harvesthub
дает:
Add-on Plan Price State
──────────────────────────────────────────────── ───────── ───── ───────
heroku-postgresql (postgresql-crystalline-06305) hobby-dev free created
└─ as DATABASE
The table above shows add-ons and the attachments to the current app (harvesthub) or other apps.
Хранилище для исходного кода приложения: https://github.com/tomhosker/harvesthub.
Я знаю, что "SELECT * FROM "+tableName+";"
это рецепт печали. Я изменю это позже.
Извините за такой длинный вопрос!