编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

eggjs 中的sequelize,你知道她有多少坑

wxchong 2024-06-19 22:18:34 开源技术 18 ℃ 0 评论

1.使用sequelize创建一张表

//使用命令行
npx sequelize migration:generate --name=user 
//在创建的文章中编辑如下代码,我们可以看到下面的代码没有id主键
module.exports = {
  async up(queryInterface, Sequelize) {
    const { INTEGER, STRING, DATE, ENUM } = Sequelize
    await queryInterface.createTable('user_role', {
      user_id: {
        type: INTEGER(20).UNSIGNED,
      },
      role_id: {
        type: INTEGER(20).UNSIGNED,
      },
      creator: {
        type: STRING(30),
        allowNull: false,
        defaultValue: '',
        comment: '创建人',
      },
      created_at: DATE,
      updated_at: DATE,
    })
  },

  async down(queryInterface, Sequelize) {
    await queryInterface.dropTable('user_role')
  },
}

2.创建的表没有id,在findOned的时候报错

//执行如下代码
let roles = await app.model.UserRole.findOne({
  where: {
    user_id: ctx.authUser.id,
  },
})
//报错
Unknown column 'id' in 'field list'
复制代码

3. 怎么解决呢在model中如下添加一句 UserRole.removeAttribute('id')

export default (app) => {
  const { INTEGER, STRING, DATE } = app.Sequelize
  const UserRole = app.model.define('user_role', {
    user_id: {
      type: INTEGER(20).UNSIGNED,
    },
    role_id: {
      type: INTEGER(20).UNSIGNED,
    },
    creator: {
      type: STRING(30),
      allowNull: false,
      defaultValue: '',
      comment: '创建人',
    },
    created_at: DATE,
    updated_at: DATE,
  })
  UserRole.removeAttribute('id')
  return UserRole
}

复制代码

4. 再次执行查询不再报错

let roles = await app.model.UserRole.findOne({
  where: {
    user_id: ctx.authUser.id,
  },
})

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表