问答

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

作者:admin 2021-04-22 我要评论

koa sequelize 怎么获取某个表的所有字段? 比如有个user表 如何能够直接获取 User表的字段 并不是数据只需要字段名 我在封装公用列表查询的时候 前端传递了不在...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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
    }
  
  }
###
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的!

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • koa sequelize 怎么获取某个表的所有字

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

  • 求助Webpack打包成功,页面报错

    求助Webpack打包成功,页面报错

  • vue使用axios请求发生301 Moved Perman

    vue使用axios请求发生301 Moved Perman

  • netstandard2.1类库项目,怎么实现删除

    netstandard2.1类库项目,怎么实现删除

腾讯云代理商
海外云服务器