如何在Sequelize模型查询中排除指定属性,默认获取其余全部数据库字段
解决方案
Sequelize 原生支持排除指定返回字段的能力,无需逐一罗列全部需要保留的字段,该特性在Sequelize v4及以上版本均支持,你可以通过attributes.exclude配置项实现需求。
单查询临时排除指定字段
你的需求对应的实现代码如下:
Model.findAll({ attributes: { exclude: ['foo'] // 此处填入你需要隐藏的字段名,支持传入多个字段组成的数组 } })
扩展用法说明
- 如果你需要在排除指定字段的同时,额外新增自定义查询字段(比如字段别名、聚合计算字段),可以搭配
include配置实现:
Model.findAll({ attributes: { exclude: ['foo'], // 将原有baz字段别名返回为new_baz include: [['baz', 'new_baz']] } })
- 如果你需要全局默认隐藏某个字段,可以在模型定义时通过默认作用域配置实现,后续所有查询默认都会自动排除对应字段:
const YourModel = sequelize.define('your_table', { // 所有字段定义 foo: DataTypes.STRING, bar: DataTypes.INTEGER // 其余字段... }, { defaultScope: { attributes: { exclude: ['foo'] } } })
- 以上配置对所有支持
attributes参数的查询方法均生效,包括findOne、findByPk、findAndCountAll等。
内容的提问来源于stack exchange,提问作者Shehryar Tanoli
相关产品推荐
相关产品推荐

