使用nodejs(10.15.0),sequelize(4.42.0)和MySQL,尝试在联接查询中从结果中删除表路径。
Table1
.findAll({
attributes: ['id', 'name', 'other'],
include: [{
attributes: ['code_id'],
model: Table2,
nested: false,
required: true,
}],
raw: true,
})
查询结果
[
{
"id": 1,
"name": "stuff",
"other": true,
"table2.code_id": 1,
}
]
期待发生
[
{
"id": 1,
"name": "stuff",
"other": true,
"code_id": 1,
}
]
答案 0 :(得分:1)
删除raw: true,
-阻止Sequelize将结果解析为对象。如果您不想使用模型实例,则需要为结果编写自己的解析器。
请注意,它将解析为以下结构(“ table2”将是一个属性):
[
{
"id": 1,
"name": "stuff",
"other": true,
"table2": {
"code_id": 1,
}
}
]
或者,您可以为子行加上别名,但是请注意,除非您创建一个映射到它的VIRTUAL字段,否则它只会进入dataValues
。
Table1
.findAll({
attributes: [
'id', 'name', 'other',
[sequelize.col('table2.code_id'), 'code_id'], // aliased here
],
include: [{
attributes: [],
model: Table2,
required: true,
}],
raw: true,
})