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;

发表回复

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