在代码下面,我将两个表[用户和地址]关联起来。正确关联,我也得到输出但不是单个对象
return myDb.user.findAll({
attributes: ['ID','NAME'],
include: [{
model: myDb.addresses,
as: 'addresses',
attributes:['ADDRESS_1','ADDRESS_2','CITY','STATE','POSTCODE'],
}]
})
.then((getCustomer) => {
.........
........
上面的代码输出:
{
"ID" : "fgfhgdsfg4323",
"NAME" : "MR.X",
"addresses": [
{
"ADDRESS_1": "BBB",
"ADDRESS_2": "GGG",
"CITY": "TTT",
"STATE": "NNN",
"POSTCODE": ""
}
]
}
我的预期输出:
{
"ID" : "fgfhgdsfg4323",
"NAME" : "MR.X",
"ADDRESS_1": "BBB",
"ADDRESS_2": "GGG",
"CITY": "TTT",
"STATE": "NNN",
"POSTCODE": ""
}
如何获得我的预期输出?
答案 0 :(得分:1)
您可以这样简单地完成操作:
return myDb.user.findAll({
attributes:['ID','NAME','addresses.ADDRESS_1','addresses.ADDRESS_2','addresses.CITY','addresses.STATE','addresses.POSTCODE'],
include: [{
model: myDb.addresses,
as: 'addresses',
attributes:[], }], raw:true,
});
您将必须获取与基本模型数据相关的数据,并且原始数据将定义为true。
答案 1 :(得分:0)
我在这里假设你有一对多的关系。因此对单个用户来说多addresses
。 Ofcorse它会返回一个addresses
如果你想要一个这样的单个对象,并且假设该用户只有一个地址,那么只需在事后处理数据。
答案 2 :(得分:0)
您正在建立关系,它会将您显示为数组,但如果您需要所需的输出,则可以尝试:
var data =
{
"ID" : "fgfhgdsfg4323",
"NAME" : "MR.X",
"addresses": [
{
"ADDRESS_1": "BBB",
"ADDRESS_2": "GGG",
"CITY": "TTT",
"STATE": "NNN",
"POSTCODE": ""
}
]
}
var result = [];
for(var i = 0; i < data.addresses.length; i++){
result.push({
"ID" : data.ID,
"NAME" : data.NAME,
"ADDRESS_1": data.addresses[i].ADDRESS_1,
"ADDRESS_2": data.addresses[i].ADDRESS_2,
"CITY": data.addresses[i].CITY,
"STATE": data.addresses[i].STATE,
"POSTCODE": data.addresses[i].POSTCODE
})
console.log(result);
}
&#13;