-
第一步:安装koa、koa-router、sequelize、mysql2,mysql2是mysql的驱动包,如果使用的是其他的数据库,就改用其他数据库的驱动包
package.json中依赖的版本:
"dependencies": { "bcryptjs": "^2.4.3", "koa": "^2.7.0", "koa-router": "^7.4.0", "mysql2": "^1.6.5", "sequelize": "^5.6.1" }
bcryptjs是密码操作工具包,用于对密码进行加密操作
-
创建数据库连接
// 文件名:core/db.js const Sequelize = require("sequelize"); // 使用sequelize操作数据库,必须导入数据库依赖包,这里导的是mysql2 const sequelize = new Sequelize(数据库名, 用户名, 密码, { dialect: 数据库类型,这里是mysql, host: 主机号,这里是localhost, port: 端口号,这里是3306, logging: true, // 是否显示SQL语句 timezone: "+08:00", // 时区,如果没有设置,会导致数据库中的时间字段与中国时区时间相差8小时 define: { timestamps: true, // 是否自动创建时间字段, 默认会自动创建createdAt、updatedAt paranoid: true, // 是否自动创建deletedAt字段 createdAt: "create_time", // 重命名字段 updatedAt: "update_time", deletedAt: "delete_time", underscored: true // 开启下划线命名方式,默认是驼峰命名 } }); sequelize.sync({ force: false // 每次启动都重新自动创建表 }); module.exports = { sequelize }
-
创建数据表对应的模型对象
// 文件名:models/user.js const {Sequelize, Model} = require("sequelize") const bcryptjs = require("bcryptjs"); const {sequelize} = require("../core/db"); class User extends Model { } User.init({ id: { type: Sequelize.INTEGER(11), autoIncrement: true, // 自动增长 primaryKey: true // 主键字段 }, nickname: Sequelize.STRING(128), password: { type: Sequelize.STRING(512), // 对密码进行加密,监听属性,使用了观察者模式,当password属性值被改变时,就执行下面的操作,观察者模式在vue中使用的很多 set(val) { const salt = bcryptjs.genSaltSync(10); const pwd = bcryptjs.hashSync(val, salt); // 将password属性的属性值设置为pwd this.setDataValue("password", pwd); } }, email: { type: Sequelize.STRING(128), unique: true }, openid: { type: Sequelize.STRING(128), unique: true } }, { sequelize, tableName: "user" // 如果不设置tableName,自动生成的数据库中的user表的表名为Users }) module.exports = { User }
-
使用User模型向数据库添加记录
// 文件名:api/user.js const Router = require("koa-router"); const router = new Router({ prefix: "/v1/user" // 设置路由前缀 }); const {User} = require("../../../models/user") // 访问地址:http://localhost:8080/v1/user/register router.post("/register", async (ctx, next) => { // 将数据保存到数据库 User.create({ nickname: v.get("body.nickname"), email: v.get("body.email"), password: v.get("body.password") }); }) module.exports = router;
Koa中使用Sequelize操作数据库
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.