koa中使用Sequelize
首先安装npm install --save sequelize
还需要安装对应的数据库驱动npm install --save mysql2
1. 首先新建一个config.js,用于保存各种配置信息,数据库信息只是其中一部分
module.exports = {
db:{
dbName:"***",
userName:"***",
password:"***",
host: "***"
}
}
2. 新建一个db.js,数据库的公用连接文件,公共配置文件
const Sequelize = require("sequelize");
const {dbName,userName,password,host} = require("../utils/config.js").db
const db = new Sequelize(dbName, userName, password, {
host,
dialect: "mysql",
logging:false //nodemon里面不显示原始查询语句
});
module.exports = {db}
3. 新建一个模型文件user.js,并导出,后面所有操作都基于这个模型文件
//第一种写法,推荐使用
const { db } = require("../utils/db");
//引入db创建的数据库连接实例,下面sequelize:db,db.define用到了
const Sequelize = require("sequelize");
const User = db.define( "user",
{
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
name: {
type: Sequelize.STRING,
allowNull: false
}
},
{
sequelize:db,
timestamps: false,//禁用时间戳
tableName: "user",//明确定义表名
}
);
module.exports = { User };
//第二种写法,使用类的写法,不太习惯使用
const { db } = require("../utils/db");
const { Sequelize, Model } = require("sequelize");
//从sequelize中引入Sequelize, Model模块
class User extends Model {};//及下面都是固定写法
User.init(
{
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
name: {
type: Sequelize.STRING,
allowNull: false
}
},
{
sequelize:db,
timestamps: false,//禁用时间戳
tableName: "user",//明确定义表名
}
);
module.exports = { User };
4. 模型同步
定义模型时,您要告诉Sequelize有关数据库中表的一些信息。但是,如果该表实际上甚至不存在于数据库中怎么办?如果存在,但具有不同的列,较少的列或任何其他差异,该怎么办?
这就需要模型同步。
- User.sync() -如果表不存在,则会创建表(如果已经存在,则不执行任何操作)
- User.sync({ force: true }) -这将创建表,如果该表已经存在,则将其首先删除
- User.sync({ alter: true }) -这将检查数据库中表的当前状态(它具有哪些列,它们的数据类型是什么,等等),然后在表中进行必要的更改以使其与模型匹配。
Student.sync({ alter: true })
5. 在路由中引入模型并使用
const router = require("koa-router")();
router.prefix("/api/users");
const {User} = require("../models/user.js")
router.post("/", async (ctx, next) => {
let res = await User.create(ctx.request.body);
ctx.body = {
code: 200,
msg: "添加成功",
res: res
};
});
module.exports = router;
本文来自博客园,作者:默永,转载请注明原文链接:https://www.cnblogs.com/Lmyong/p/16864931.html