NodeJS,Express,Sequelize框架,初步体验,完成后台接口案例

说明

Express

基于 Node.js 平台,快速、开放、极简的 Web 开发框架,参考,地址:https://www.expressjs.com.cn/

Sequelize框架

Node.js的ORM框架,是一个很成熟的框架,在速度和性能上也非常有优势。而其中最关键的地方就在于,日常开发只需要管理对象的创建、查询方法的调用等。支持的数据库包括:PostgreSQL、 MySQL、MariaDB、 SQLite和MSSQL。

Sequelize特点:1、强大的模型定义,支持虚拟类型。2、支持完善的数据验证,减轻前后端的验证压力。3、Sequelize的查询非常全面和灵活。

地址:https://github.com/sequelize/cli

项目代码

项目结构

──项目
    │  .gitignore
    │  app.js
    │  package.json
    │  
    ├─config
    │      db.js
    │      
    ├─dao
    │      userDao.js
    │      
    ├─model
    │      userModel.js
    │  
    ├─routes
    │      userRoute.js
    │      
    └─service
            userService.js

package.json

"dependencies": {
  "express": "^4.17.1",
  "mysql": "^2.18.1",
  "mysql2": "^2.2.5",
  "sequelize": "^6.6.2"
},

app.js

const express = require('express');
const app = new express();
// 路由
const userRoute = require('./routes/userRoute');
app.use('/', userRoute);
// 服务端口
const port = 3000;
app.listen(port, () => console.log('服务' + port + '已启动'));

routes/userRoute.js

const express = require('express');
const router = express.Router();

const {
    getUserListService,
} = require('../service/userService');

// 列表接口1
router.get('/userList', async (req, res) => {
    let userList = await getUserListService();
    res.send(userList)
});

module.exports = router;

service/userService.js

const { 
    getUserListDao,
} = require('../dao/userDao');

const userService = {
    // 获取列表1
    getUserListService: async () => {
        let userList = await getUserListDao();
        return userList;
    },
}

module.exports = userService;

dao/userDao.js

const userModel = require('../model/userModel');

const userDao = {
    // 获取列表
    getUserListDao: async () => {
        let userList = await userModel.findAll();
        return userList;
    },
};

module.exports = userDao;

model/userModel.js

const Sequelize = require('sequelize');
const db = require('../config/db');

// 创建model
let userModel = db.define('system_user', {
    username: {
        type: Sequelize.STRING,
        field: 'username'
    },
    sex: {
        type: Sequelize.STRING,
        field: 'sex'
    },
    age: {
        type: Sequelize.INTEGER,
        field: 'age'
    },
    city: {
        type: Sequelize.STRING,
        field: 'city'
    },
    job: {
        type: Sequelize.STRING,
        field: 'job'
    }
});

module.exports = userModel;

config/db.js

const Sequelize = require('sequelize');

// 
const db = new Sequelize('health_business_demo', 'root', 'root1234', {
    host: '132.232.30.6',
    dialect: 'mysql',
    pool: {
        max: 5,
        min: 1,
        idle: 10000,
    },
    dialectOptions: {
        chartset: 'utf8mb4'
    },
    define: {
        freezeTableName: true,   // 自定义表面,不设置会自动将表名转为复数形式
        timestamps: true // 自动生成更新时间、创建时间字段:updatedAt,createdAt
    }
})

db.authenticate().then(() => {
    console.log('mysql连接成功');
}).catch(err => {
    console.log('mysql连接失败:' + err);
})

module.exports = db;

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注