pnpm init -ypnpm i koa @koa/router koa-body sequelize
目录结构
配置文件
// config.js
module.exports = {// 环境变量,默认为dev// 项目上线之后,要把这里改为 prodenvironment: 'dev',// 数据库配置database: {dbName: 'koa-cms-server',host: 'localhost',port: 3306,user: 'root',password: 'zlylele123'}}
"scripts": {"dev": "nodemon ./src/index","start": "pm2 start ./src/index",}
src/model/index.js
连接数据库
const Sequelize = require('sequelize');let { dbName, host, port, user, password } = require('../config/config').database// Sequelize接收四个参数:// 参数1:dbName, 数据库名// 参数2:user, 数据库账户// 参数3:password, 密码// 参数4:{}, 这里面的配置项很多const sequelize = new Sequelize(dbName, user, password, {// 指定数据库的类型// sequelize是和具体的数据库无关的,这里可以使用其他的,比如mongodb,oracle等// 连接mysql,还要安装mysql的驱动:mysql2dialect: 'mysql',host,port,// 是否在控制台显示原始的sql操作,默认为truelogging: true,// 设置时区,一定要设置成北京时区,否则自动生成的会和北京时间相差8小时timezone: '+08:00',// 非常强的配置项,在这里配置更加个性化的参数define: {timestamps: true,paranoid: true,createdAt: 'created_at',updatedAt: 'updated_at',deletedAt: 'deleted_at',underscored:true, // 转为下划线freezeTableName:true, // 冻结表名,保持Model和数据库表一致。默认为false。scopes:{bh:{attributes: {exclude:['updated_at','deleted_at','created_at']}}}}});sequelize.authenticate().then(() => {console.log('Connection has been established successfully.')}).catch(err => {console.log('Unable to connect to the database', err)})// 必须执行这个方法,才会根据model去生成数据表// 只有Model对应的表不存在时,才会生效,进行同步// 若表已经存在,则不再发挥同步作用sequelize.sync().then(() => {console.log('init db ok')}).catch(err => {console.log('init db error', err)})module.exports = sequelize;
src/model/User.js
定义模型
define() 方法的第一个参数为表名,对应的是 users 表。
如果不设置 timestamps,Sequlize 会自动为我们添加创建时间和更新时间,我一般选择关闭,手动添加灵活性高些。
定时任务
安装日志
pnpm i @koa/logger
src/index.js
启动服务
