Skip to content

Instantly share code, notes, and snippets.

@febri4n
Last active June 7, 2020 07:23
Show Gist options
  • Save febri4n/969454fb41b5e1748a12b4eabcada673 to your computer and use it in GitHub Desktop.
Save febri4n/969454fb41b5e1748a12b4eabcada673 to your computer and use it in GitHub Desktop.
Buat CRUD Node.js langkah demi langkah dengan Express.js, PostgreSQL, Knex.js & deploy ke Heroku

Node.js Express JSON API - CRUD Stickers

We'll be using:

  • Postgres for our database

  • knex.js for our database migrations, seeds and queries.

  • express.js for our JSON routes

  • Mocha, Chai and SuperTest to test our routes

  • Prerequisites (Mac OS Commands)

    • Latest version of Node.js
      • brew install node
    • Postgres
      • brew install postgres
      • brew services start postgres
      • createdb
    • Express Generator
      • npm install -g express-generator
    • Knex installed globaly
      • npm install -g knex

Server Check List

  1. Create a server folder

    • mkdir namaprojectfolder
  2. Generate Express App

    • express
  3. initialize git repo

    • git init
    • gitignore node
  4. Create database

    • createdb namadatabase
  5. Initialize knex project

    • Install knex and pg

      • npm install --save knex pg
    • Create knexfile.js

      • knex init
      • ubah db connection di knexfile.js (development)
  6. Create sticker table migration

    • knex migrate:make namatable
    • buat table di folder migrate, atur field sesuai keinginan
    • knex migrate:latest (perintah untuk create table)
  7. Seed sticker table with sample data

    • knex seed:make namafiledatadummy
    • bisa atur sendiri disitu/buat file baru, buat array object dengan isi data dummy (seed/namafiledatadummy)
    • knex seed:run (perintah insert data dummy ke table)
  8. Convert Express App to JSON API

    • Remove view rendering
      • delete folder view
    • Remove routes folder
      • delete folder routes
    • Remove static serve and public folder
      • delete folder public
  9. Update error handler

    • bisa diskip/lihat app.js di repo exgrenex
    • npm install
    • npm uninstall jade (uninstall yg gak perlu)
  10. Add api folder and create/mount router

    • buat folder api
    • buat file namatable di dalam folder api
    • buat router ke home
    • tambah router ke app.js diantara middleare dan error handling
    • npm install nodemon --save-dev
    • edit package.json, tambah "dev" -> nodemon
  11. Connect to the database'

    • Create database connection file
      • buat folder db
      • buat file knex.js, setting environment config
    • Create a queries file
      • buat file queries.js di folder db
  12. List all records with GET /api/v1/stickers

    • Create query
    • Create route
  13. Setup tests

    • Install mocha, chai and supertest
      • npm install --save-dev mocha cai supertest
    • Add a test database connection
      • tambah db connection di knexfile.js (test) dibawah development
    • Add npm test script
      • buat folder test
      • buat file namatable.app.js di dalam folder test (buat testing crud tiap table) bisa pisah / jadi satu
      • buat test script di file test.
      • tambah package.json, "test" -> dropdb & createdb NODE_ENV=test mocha
  14. Create before

    • buat script di file testnya
    • npm test (Make sure the tests are working!)
  15. List all records with GET /api/v1/stickers

    • Add test
  16. Show one record with GET /api/v1/stickers/:id

    • Validate id
    • Create query
    • Create route
    • Add test
  17. Create a record with POST /api/v1/stickers

    • Create route
    • Validate sticker!
    • Create query
    • Add test
  18. Update a record with PUT /api/v1/stickers/:id

    • Create route
    • Validate id
    • Validate updates
    • Create query
    • Add test
  19. Delete a record with DELETE /api/v1/stickers/:id

    • Create route
    • Validate id
    • Create query
    • Add test
  20. Deploy to heroku

    • heroku login
    • heroku create domainheroku
    • heroku addons:create heroku-postgresql
    • tambah connection db di knexfile.js (production)
    • heroku pg:psql
    • heroku config
    • git push heroku master
    • heroku open
    • heroku run knex migrate:latest
    • heroku run knex seed:run
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment