如何在Sequelize中实现关联表非嵌套格式的数据查询?
Sequelize单次查询实现关联表字段平级返回
要实现单次查询就得到你想要的非嵌套格式数据,不需要分两次查询拼接,可以通过显式指定字段别名的方式来处理:
解决方案代码
const { col } = require('sequelize'); const operator = await operatorService.findOne({ where: { id: id }, // 手动指定需要返回的所有字段,给关联表的email设置别名 attributes: [ 'city', 'firstName', [col('Account.email'), 'email'] ], include: { model: models.Account, attributes: [] // 这里不需要返回Account的原生字段,避免冗余 }, raw: true });
原理说明
你之前的代码用raw: true时,Sequelize会自动给关联表的字段加上模型名.字段名的前缀来区分来源。通过sequelize.col()方法指定关联表的字段,再给它设置别名email,就能让关联字段直接平级出现在结果对象里,同时保持单次查询的效率。
内容的提问来源于stack exchange,提问作者Juzioikasztanka
相关产品推荐
相关产品推荐

