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;

 

posted @ 2022-11-07 09:23  默永  阅读(143)  评论(0编辑  收藏  举报