Tredun ohjelmistokehittäjien kurssimateriaaleja
Tietokanta migrations ja ohjelman toiminta sen kanssa kannattaa ensin testata lokaalin Postgres tietokannan kanssa ennen sen siirtämistä Herokuun.
Jos olet käyttänyt MySQL-tietokantaa tähän asti, siirtyminen Postgres:iin voi vaatia pieniä muutoksia koodiin.
Käynnistä lokaali Postgres ja luo sinne tietokanta (notes)
Muuta knexfile.js - käyttämään lokaalia Postgres-tietokantaan:
development: {
client: 'postgresql',
connection: {
user:'postgres',
password: 'mypass123',
database: 'notes'
}
},
Aja migrations
npx knex migrate:latest
npx knex seed:run
Huom! Jos olet käyttänyt tähän asti vain MySQL-tietokantaa, asenna Postgres ensin (database-kansiossa):
npm install pg --save
Testaa ohjelman toiminta lokaalin tietokannan kanssa
Muokkaa .env - tiedostoon lokaalin tietokannan tiedot ja käynnistä se (npm start):
PORT=3000
DB_USER=postgres
DB_PASS=mypass123
DB_HOST=localhost
DB_PORT=5432
DB_TYPE=postgresql
DB_DATABASE=notes
SECRET=tosisalainensalasanainen
Huom! Jos olet käyttänyt tähän asti vain MySQL-tietokantaa, asenna Postgres ensin (backend-kansiossa):
npm install pg --save
Tee tarvittavat muutokset koodiin
MySQL-tietokanta palautta INSERT:issa luotujen tietueiden id:t automaattisesti. Posgres-tietokannan kanssa id:t pitää pyytää erikseen.
Lisää “returning” knex:iin:
knex('notes').insert(newNote).returning('id')
Tämän lisäksi palautettu id ei ole luku (kuten MySQL:ssä), vaan olio, joten lisää koodiin myös .id, jotta saat id:lle lukuarvon:
return_value[0].id
Tietokannan siirtäminen Herokuun
Siirrä nyt tietokanta Herokuun (ohjeet Postgres-tietokannan siirtämiseksi Herokuun)
Heroku-tietokannan testaaminen
Testaa ohjelmasi toiminta käyttämällä Heroku:ssa olevaa tietokantaa, muokkaa .env-tiedostoa ja käynnistä ohjelmasi uudelleen.
PORT=3000
DB_USER=your_user_in_heroku
DB_PASS=your_password_in_heroku
DB_HOST=your_host_in_heroku
DB_PORT=5432
DB_TYPE=postgresql
DB_DATABASE=your_database_in_heroku
SECRET=tosisalainensalasanainen
Huom! Poista SSL-varoitukset lisäämällä tämä rivi utils/config.js -tiedostoon (kohtaan connection):
ssl: { rejectUnauthorized: false }
Docker-kontin luominen
Ympäristömuuttujien konffaaminen Herokussa
Lisää tarvittavat ympäristömuuttujat Heroku-appiin (Config Vars):
Siirrä kontti Herokuun