koa sequelize 怎么获取某个表的所有字段?

发布于 2022-09-12 22:33:32 字数 1972 浏览 44 评论 0

koa sequelize 怎么获取某个表的所有字段?

比如有个user表 如何能够直接获取 User表的字段 并不是数据只需要字段名 我在封装公用列表查询的时候 前端传递了不在表中的字段过来 会报错 Unknown column 'user.role' in 'where clause'


module.exports = function (sequelize, DataTypes) {
    return sequelize.define('user', {
        id: {
            type: DataTypes.INTEGER.UNSIGNED,
            allowNull: false,
            primaryKey: true,
            autoIncrement: true
        },
        // 用户名字
        username: {
            type: DataTypes.STRING(100),
            field: 'username',
            allowNull: false
        },
        // 用户状态
        status: {
            type: DataTypes.STRING(100),
            defaultValue: 0  // 0 未启用 1 启用
        }, 
        
    }, {
        
        freezeTableName: true
    })
}

封装公用列表查询代码如下 javascript

 /**
   * @param {Object} query 请求内容
   *  model 对应请求的表model
   *  where 对应请求的查询条件
   *  order 对应请求的查询排序
   *  attributes 对应需要获取的参数字段
   *  querys {Object} url中请求的参数
   */
  static async paginationList(query) {
    const querys = query.querys
    let where = {}
    if (query.where) {
      where = query.where
    } else {
        // 在这里会传入前端url中的参数但是如果传入了不存在的参数将抛出错误 ,
        // 现在不想抛出错误还继续执行 所以想到能否获取到表所有字段后做筛选?
      Object.keys(querys).map(item => {
        if (item !== 'pagesize' && item !== 'page') {
          where[item] = {
            [Op.eq]: querys[item],
          }
        }
        return item
      })
    }
    try{
        const user = await User.findAll({ //表实例暂时写死
            attributes: query.attributes.split(','),
            where,
            order: [
              [ 'created_at', 'ASC' ],
            ],
             // 当前页
            offset: ((querys.page || 1) - 1) * Number((querys.pagesize || 10)),
            // 每页显示的条数
            limit: Number((querys.pagesize || 10)),
          })
          return user
    }catch(err){
        throw err
    }
  
  }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

原谅过去的我 2022-09-19 22:33:32
Select COLUMN_NAME 列名, DATA_TYPE 字段类型, COLUMN_COMMENT 字段注释 from INFORMATION_SCHEMA.COLUMNS  
Where table_name = 'companies' ##表名 
AND table_schema = 'testhuicard'##数据库名 
AND column_name LIKE 'c_name' ##字段名

我的思路是用sequelize的原始查询执行上面的sql代码,当然这个是针对mysql的!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文