Sequelize关联查询时如何排除关联表DBUser的password字段
解决Sequelize关联查询中排除关联表字段的问题
嘿,这个问题我之前踩过一模一样的坑!你现在的写法是把exclude: ['password']加在了主表DBTweet的属性配置里,但password是关联表DBUser的字段,主表压根没有这个字段,所以自然不会生效啦。
正确的做法是给每个需要调整字段的关联模型单独配置属性规则,也就是把include里的DBUser改成一个对象,在这个对象里指定要排除的字段。修改后的代码如下:
DBTweet.findAll({ include: [ // 针对DBUser单独配置属性,排除password字段 { model: DBUser, attributes: { exclude: ['password'] } }, // DBComment如果不需要调整字段,直接写模型名就行 DBComment ] }) .then(tweets => { res.status(200).json(tweets) }) .catch(err => { printC(err) res.status(500).json({ error: err }) })
再补两句细节:
- 这种方式能精准控制每个关联表返回的字段,后续如果
DBComment也需要排除或指定某些字段,同样可以用{ model: 模型名, attributes: {...} }的格式 - 主模型的
attributes配置只会影响主表自身的字段,关联表的字段规则必须单独在include里设置
内容的提问来源于stack exchange,提问作者SwiftiSwift
相关产品推荐
相关产品推荐

