当我使用includes时,嵌套对象存储在以其模型命名的字段中,而不是在它们关联之后。
我有这样一个协会:
account.hasMany(key,{'foreignKey':'owner'});
key.belongsTo(account,{'foreignKey':'owner'});
当我现在使用findAll()请求一些密钥并希望包含其关联帐户时,它们最终会出现在新的account
字段中,而不是owner
字段中。
当我在include中的关联AND / OR中使用as
时,我在定义时会收到错误。
我从findAll得到的东西看起来像这样:
[
{
id:1,
owner:3,
account:{id:3, ...}
},
{
id:2,
owner:123,
account:{id:123, ...}
}
]
我想要的是:
[
{
id:1,
owner:{id:3, ...}
},
{
id:2,
owner:{id:123, ...}
}
]
- 更新 -
我试过这样:
account.hasMany(key, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
key.belongsTo(account, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
使用此查询:
key.findAll({
'where':{...},
'include':account
})
但我现在收到account
与key
---编辑2 ---
如果我配置这样的关联:
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
然后像那样查询:
key.findAll({
where:...,
include:{
model:account,
as:'owner'
}
});
我收到错误:可能未处理错误:帐户(所有者)与密钥无关!
如果我配置这样的关联:
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
然后像那样查询:
key.findAll({
where:...,
include:{
model:account
}
});
我收到了这个回复:
{
"keys": [
{
"id": 1,
...
"owner": 1,
"account": {
"id": 1,
...
}
},
{
"id": 3,
...
"owner": 2,
"account": {
"id": 2,
...
}
}
]
}
如果我配置这样的关联:
account.hasMany(key, {'as':'owner'});
key.belongsTo(account, {'as':'owner'});
然后像那样查询:
key.findAll({
where:...,
include:{
model:account,
as:'owner'
}
});
我收到了这个回复:
{
"keys": [
{
"id": 1,
...
"accountId": 1,
"ownerId": 1,
"owner":null
},
{
"id": 3,
...
"accountId": 2,
"ownerId": 2,
"owner":null
}
]
}
似乎我尝试的所有配置都不会将包含的记录放在正确的位置或抛出错误。