包括在sequelize.js中
使用“包含”时,嵌套对象存储在以其模型命名的字段中,而不是以其关联命名 我有这样一个协会:包括在sequelize.js中,sequelize.js,Sequelize.js,使用“包含”时,嵌套对象存储在以其模型命名的字段中,而不是以其关联命名 我有这样一个协会: account.hasMany(key,{'foreignKey':'owner'}); key.belongsTo(account,{'foreignKey':'owner'}); [ { id:1, owner:3, account:{id:3, ...} }, { id:2, owner:123, account:{id:123, ...
account.hasMany(key,{'foreignKey':'owner'});
key.belongsTo(account,{'foreignKey':'owner'});
[
{
id:1,
owner:3,
account:{id:3, ...}
},
{
id:2,
owner:123,
account:{id:123, ...}
}
]
account.hasMany(key, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
key.belongsTo(account, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'as':'owner'});
key.belongsTo(account, {'as':'owner'});
现在,当我向findAll请求一些密钥并希望包括它们的关联帐户时,它们最终会出现在一个新的帐户字段中,而不是所有者字段中
在关联和/或包含中使用as时,在定义时会出现错误
我从findAll那里得到的结果如下:
account.hasMany(key,{'foreignKey':'owner'});
key.belongsTo(account,{'foreignKey':'owner'});
[
{
id:1,
owner:3,
account:{id:3, ...}
},
{
id:2,
owner:123,
account:{id:123, ...}
}
]
account.hasMany(key, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
key.belongsTo(account, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'as':'owner'});
key.belongsTo(account, {'as':'owner'});
我想要的是:
[
{
id:1,
owner:{id:3, ...}
},
{
id:2,
owner:{id:123, ...}
}
]
-更新-
我这样试过:
account.hasMany(key,{'foreignKey':'owner'});
key.belongsTo(account,{'foreignKey':'owner'});
[
{
id:1,
owner:3,
account:{id:3, ...}
},
{
id:2,
owner:123,
account:{id:123, ...}
}
]
account.hasMany(key, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
key.belongsTo(account, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'as':'owner'});
key.belongsTo(account, {'as':'owner'});
使用此查询:
key.findAll({
'where':{...},
'include':account
})
但我现在得到的错误是,帐户与密钥不关联
--编辑2--
如果我这样配置关联:
account.hasMany(key,{'foreignKey':'owner'});
key.belongsTo(account,{'foreignKey':'owner'});
[
{
id:1,
owner:3,
account:{id:3, ...}
},
{
id:2,
owner:123,
account:{id:123, ...}
}
]
account.hasMany(key, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
key.belongsTo(account, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'as':'owner'});
key.belongsTo(account, {'as':'owner'});
然后像这样询问他们:
key.findAll({
where:...,
include:{
model:account,
as:'owner'
}
});
key.findAll({
where:...,
include:{
model:account
}
});
key.findAll({
where:...,
include:{
model:account,
as:'owner'
}
});
我得到错误:可能是未处理的错误:帐户所有者未与密钥关联
如果我这样配置关联:
account.hasMany(key,{'foreignKey':'owner'});
key.belongsTo(account,{'foreignKey':'owner'});
[
{
id:1,
owner:3,
account:{id:3, ...}
},
{
id:2,
owner:123,
account:{id:123, ...}
}
]
account.hasMany(key, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
key.belongsTo(account, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'as':'owner'});
key.belongsTo(account, {'as':'owner'});
然后像这样询问他们:
key.findAll({
where:...,
include:{
model:account,
as:'owner'
}
});
key.findAll({
where:...,
include:{
model:account
}
});
key.findAll({
where:...,
include:{
model:account,
as:'owner'
}
});
我得到的答复是:
{
"keys": [
{
"id": 1,
...
"owner": 1,
"account": {
"id": 1,
...
}
},
{
"id": 3,
...
"owner": 2,
"account": {
"id": 2,
...
}
}
]
}
{
"keys": [
{
"id": 1,
...
"accountId": 1,
"ownerId": 1,
"owner":null
},
{
"id": 3,
...
"accountId": 2,
"ownerId": 2,
"owner":null
}
]
}
如果我这样配置关联:
account.hasMany(key,{'foreignKey':'owner'});
key.belongsTo(account,{'foreignKey':'owner'});
[
{
id:1,
owner:3,
account:{id:3, ...}
},
{
id:2,
owner:123,
account:{id:123, ...}
}
]
account.hasMany(key, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
key.belongsTo(account, {
'as':'owner',
'foreignKey':{
'name':'owner_id',
'field':'owner'
}
})
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'foreignKey':'owner'});
key.belongsTo(account, {'foreignKey':'owner'});
account.hasMany(key, {'as':'owner'});
key.belongsTo(account, {'as':'owner'});
然后像这样询问他们:
key.findAll({
where:...,
include:{
model:account,
as:'owner'
}
});
key.findAll({
where:...,
include:{
model:account
}
});
key.findAll({
where:...,
include:{
model:account,
as:'owner'
}
});
我得到的答复是:
{
"keys": [
{
"id": 1,
...
"owner": 1,
"account": {
"id": 1,
...
}
},
{
"id": 3,
...
"owner": 2,
"account": {
"id": 2,
...
}
}
]
}
{
"keys": [
{
"id": 1,
...
"accountId": 1,
"ownerId": 1,
"owner":null
},
{
"id": 3,
...
"accountId": 2,
"ownerId": 2,
"owner":null
}
]
}
似乎我尝试的所有配置要么没有将包含的记录放在正确的位置,要么抛出错误。您不能将关联命名为与外键相同的名称,它们将发生冲突。但您可能可以使用foreignKey:{name:'owner_id',field:'owner'}来修复此问题。谢谢,但这不起作用:\n对解释进行了编辑您需要使用include:[{model:account,as:'owner'}]这不起作用。我得到可能未处理的错误:帐户所有者未与密钥关联!或者响应中的所有者为空,或者帐户在帐户下而不是所有者。请使用更多示例进行编辑