gpt4 book ai didi

javascript - 序列化原始 findAll 返回不需要的 ID 列

转载 作者:行者123 更新时间:2023-12-03 01:15:16 24 4
gpt4 key购买 nike

我正在使用 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 的想法(仅在根级别定义我的属性)的正确方法。为了实现这一点,您需要使用 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:[]
}]
}]
})

关于javascript - 序列化原始 findAll 返回不需要的 ID 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com