包含在sequelize.js中

时间:2014-12-08 16:51:01

标签: sequelize.js

当我使用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
})

但我现在收到accountkey

无关的错误

---编辑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
        }
    ]
}

似乎我尝试的所有配置都不会将包含的记录放在正确的位置或抛出错误。

0 个答案:

没有答案