Lidemy / mentor-program-2nd-zzly00

mentor-program-2nd-zzly00 created by GitHub Classroom
1 stars 2 forks source link

[筆記] Express #30

Open zzly00 opened 5 years ago

zzly00 commented 5 years ago

Express

install

template engine

static file

額外補充資料

zzly00 commented 5 years ago

MVC

View

Model

Controller

zzly00 commented 5 years ago

DB

mysql

zzly00 commented 5 years ago

Middleware

Session

app.get('/', function (req, res) { const username = req.session.username; res.render('index',{ message: username ? username : 'not login' }) });

// 設置 session app.get('/login', function(req, res) { req.session.username = 'abc'; res.send('login success'); })

// 清 session app.get('/logout', function(req, res) { req.session.destroy(); res.send('clear session'); })

```javascript
// 給 model 的範例
app.get('/login', function(req, res) {
    userModel.login(req.query.username, req.query.password, function(result){
        if(result){
            req.session.username = result.username;
            res.redirect('/');
        }else{
            res.send('login fail');
        }
    })
})
zzly00 commented 5 years ago

ORM

Sequelize

const db = new Sequelize('database', 'username', 'password', { host: '', dialect: 'mysql', }); db .authenticate() .then(() => { console.log('Connection has been established successfully.'); }) .catch(err => { console.error('Unable to connect to the database:', err); });

module.exports = db;

```javascript
// ./model/user.js
const Sequelize = require('sequelize');
const db = require('./db');

const User = db.define('user', {
    u_id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    username: {
        type: Sequelize.STRING(20)
    },
    password: {
        type: Sequelize.STRING(256)
    },
    nickname: {
        type: Sequelize.STRING(64)
    },
    avatar: {
        type: Sequelize.STRING(500)
    },
    status: {
        type: Sequelize.BOOLEAN,
        defaultValue: true
    },
    create_time: {
        type: Sequelize.DATE,
        defaultValue: Sequelize.NOW
    },
    update_time: {
        type: Sequelize.DATE
    }
}, {
    tableName: 'zzly00_users',
    createdAt: false,
    updatedAt: false
});

User.sync();

module.exports = User;
// app.js
const User = require('./model/user');

app.get('/', (req, res) => {
    User
        .create({username: 'test', password: 'aaa', nickname: 'test'})
        .then(() => {
            console.log('created');
        })
})
zzly00 commented 5 years ago

其他 Library

nodemon

pm2