包括在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'}]这不起作用。我得到可能未处理的错误:帐户所有者未与密钥关联!或者响应中的所有者为空,或者帐户在帐户下而不是所有者。请使用更多示例进行编辑