-
第一步:安裝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操作數據庫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.