javascript - Sequelize raw findAll 返回不需要的 ID 列
问题描述
我正在使用 Sequelize 使用 INNER JOINS 执行 SELECT 查询,如下例所示:
let result=await model.findAll({
attributes:[['att1', 'alias1'], ['att2', 'alias2']],
include:[{
model:model1,
attributes:[['att3', 'alias3']],
include:[{
model:model2,
attributes:[['att4', 'alias4']]
}]
}],
limit:50,
raw:true
})
我想获得具有以下格式的对象数组:
{
alias1:value1,
alias2:value2,
alias3:value3,
alias4:value4
}
但相反,我得到:
{
alias1:value1,
alias2:value2,
model1.alias3:value3,
model1.model2.id:rowId,
model1.model2.alias4:value4
}
我想知道是否有办法删除“模型”。属性名称的一部分,如果有人可以解释我为什么 Sequelize 会返回“rowId”,如果我没有将它包含在属性数组中以及如何避免它,所以我不必迭代数组来获取我想要的格式。
谢谢
解决方案
经过大量研究,我找到了实现 Vivek Doshi 的想法的正确方法,attributes
即在根级别定义 my only。要实现这一点,您需要使用该Sequelize.col()
函数并传递 Sequelize 为表创建的别名作为参数,通常类似于table1->table2.attribute
. 所以我的例子的工作版本是:
let result= await model.findAll({
attributes:[
['att1', 'alias1'], ['att2', 'alias2'], [Sequelize.col('table1.att3'),
'alias3'], [Sequelize.col('table1->table2.att4'), 'alias4']],
include:[{
model:model1,
attributes:[],
include:[{
model:model2,
attributes:[]
}]
}]
})
推荐阅读
- python - 拆分(分解)熊猫数据框字符串条目以分隔行。多列
- python - 在日期最接近的一个键和值位于任意两列的另一个键上合并两个表
- google-cloud-platform - Google Cloud 数据流和 Cloud Functions 错误 - ModuleNotFoundError
- python - 使用 python 正则表达式重复模式
- visual-studio-code - 如何在 VSCode 中禁用 ^M 行尾?
- mysql - 为什么 MySQL SUM IF 在 2021 年退出工作
- ios - 在哪里可以查看大型 iOS 代码库以了解其组织方式?
- javascript - 如何在我的方法中通过 Paypal Orders API 的使用授权以及我应该返回什么?
- ios - 无法在 iOS 中初始化 crashlytics
- python - 变量中的 Python 字符串方法