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