美文网首页
egg+ts使用sequelize

egg+ts使用sequelize

作者: 梦幽辰 | 来源:发表于2020-05-11 23:19 被阅读0次

    前言

    安装

    npm install --save egg-sequelize mysql2
    

    配置

    // config/plugin.ts
    sequelize: {
      enable: true,
      package: 'egg-sequelize',
    },
        
    // config/config.defaullt.ts
    config.sequelize = {
      dialect: 'mysql', // 表示是mysql数据库
      host: '127.0.0.1',
      port: 3306,
      database: 'test',
      username: 'root',
      password: '123456',
      timezone: '+08:00', // 表示为东八区的时间
    };
    

    model 创建

    // app/model/User.ts
    import { Application } from 'egg';
    
    export default function(app: Application) {
      const { STRING, INTEGER, BIGINT } = app.Sequelize;
      const User = app.model.define('users', {
        id: {
          type: INTEGER, // INTEGER就是mysql中的int
          primaryKey: true,
          autoIncrement: true, // 自动增长
        },
        app_name: STRING(20),
        j: BIGINT,
        url: STRING(100),
        country: STRING(10),
      }, {
        // timestamps: false, // 去除createAt updateAt
        createdAt: false, // 表示不启用created_at
        updatedAt: false, // 表示不启用updated_at
        freezeTableName: true, // 使用自定义表名
        // 使用自定义表名之后上面写的users就直接就是你的表名,如果不加的话,你就可以写user,但是自己的表名为users,程序会自动将s加上
        tableName: 'users', // 自定义的表名,也可以不写,直接用define后面的也可以
        // 只要你使用了freezeTableName,程序就不会自动给你加上s了
      });
    
      return class extends User {};
    }
    

    命令

    增加数据

    const res = await ctx.model.User.create({
        app_name: 'xxx',
        j: 10,
        url: 'http://xxx.com',
        country: 'CN',
    });
    

    查找

    查找表中全部数据

    const res = await ctx.model.User.findAll();
    

    投影表中部分字段

    const res = await ctx.model.User.findAll({
        attributes: [ 'id', 'app_name' ], // 投影id和app_name
    });
    

    条件查询

    const res = await ctx.model.User.findAll({
        attributes: [ 'id', 'app_name' ],
        where: {
          id: 2,
        },
        limit: 1, // 限制
        offset: 1, // 偏移
    });
    

    根据主键查找

    const res = await ctx.model.User.findByPk(1);
    

    修改数据

    const res = await ctx.model.User.findByPk(22);
    res?.update({ app_name: 'xxx' });
    

    查找到相应元组再更新数据

    删除数据

    const res = await ctx.model.User.findByPk(22);
    res?.destroy();
    

    相关文章

      网友评论

          本文标题:egg+ts使用sequelize

          本文链接:https://www.haomeiwen.com/subject/xrymnhtx.html