Skip to content

Latest commit

 

History

History
159 lines (119 loc) · 2.58 KB

LEARNING.md

File metadata and controls

159 lines (119 loc) · 2.58 KB

Learning Express

Install node.

Install global packages for command-line access.

npm install express-generator -g # enables app-generation CLI
npm install nodemon -g # obviates need to restart dev server every time a file is changed
npm install -g node-inspector # allows you to insert debugging breakpoints
npm install -g knex # enables a database migration CLI

Generate a new express application.

express robots_app --ejs
cd robots_app/
npm install

Create database user.

psql
CREATE USER robot WITH ENCRYPTED PASSWORD 'r0b0t!';
ALTER USER robot CREATEDB;
ALTER USER robot WITH SUPERUSER;
\q

Create a development database.

mkdir db/
touch db/create.sql
# db/create.sql
DROP DATABASE IF EXISTS robots_dev;
CREATE DATABASE robots_dev;
GRANT ALL PRIVILEGES ON DATABASE robots_dev to robot;
psql -U robot --password -d postgres -f $(pwd)/db/create.sql

Connect to development database.

npm install knex --save
npm install pg --save

Initialize a new knex app.

knex init

Change the .knexfile config to use postgresql in development and production.

// knexfile.js
module.exports = {
  development: {
    client: 'pg',
    connection: {
      user: 'robot',
      password: 'r0b0t!',
      database: 'robots_dev'
    },
    migrations: {
      directory: __dirname+"/db/migrations"
    },
    seeds: {
      directory: __dirname+"/db/seeds"
    }
  },

  production: {
    client: 'pg',
    connection: process.env.DATABASE_URL,
    migrations: {
      directory: __dirname+"/db/migrations"
    },
    seeds: {
      directory: __dirname+"/db/seeds"
    }
  }
};

Optionally set the NODE_ENV environment variable to "development"; note the default environment for migrations is "development".

Generate a new migration.

knex migrate:make create_robots

Migrate the database.

knex migrate:latest

Generate a new database seed file.

knex seed:make insert_robots

Seed database.

knex seed:run

Stick a database configuration file in the root directory.

// db.js
var config      = require('knexfile.js');
var env         = 'development';
var knex        = require('knex')(config[env]);

module.exports = knex;

knex.migrate.latest([config]);

Require the database connection.

// app.js
// ...
var db  = require('./db');
var app = express();
// ...

Flash Messages

Flash messages require sessions.

npm install connect-flash --save
npm install express-messages --save
npm install express-session --save