首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有HasMany的sequelize/sequelize-typescript - findAll返回对象而不是数组

带有HasMany的sequelize/sequelize-typescript - findAll返回对象而不是数组
EN

Stack Overflow用户
提问于 2020-06-17 22:37:36
回答 1查看 1.9K关注 0票数 2

我正在尝试使用sequelize-typescript建立一对多关系。但是,当我尝试获取数据时,许多关系返回给我的是对象而不是数组

我有两张桌子。团队和球员。

团队可以有多个球员,一个球员属于一个团队。

我的模型:

代码语言:javascript
复制
@Table
export class Team extends Model<Team> {
  @Column
  name: string

  @HasMany(() => Player)
  players: Player[]
}

@Table
export class Player extends Model<Player> {
  @Column
  name: string

  @Column
  num: number

  @ForeignKey(() => Team)
  @Column
  teamId: number

  @BelongsTo(() => Team)
  team: Team
}

当我运行时:

代码语言:javascript
复制
Team.findAll({ include: [Player] })

我明白了:

代码语言:javascript
复制
[
  {
    "id": 1,
    "name": "My Team",
    "createdAt": "2020-06-17T14:23:03.000Z",
    "updatedAt": "2020-06-17T14:23:03.000Z",
    "players": {
      "id": 1,
      "name": "Player One",
      "num": 10,
      "teamId": 1,
      "createdAt": "2020-06-17T14:23:03.000Z",
      "updatedAt": "2020-06-17T14:23:03.000Z"
    }
  },
  {
    "id": 1,
    "name": "My Team",
    "createdAt": "2020-06-17T14:23:03.000Z",
    "updatedAt": "2020-06-17T14:23:03.000Z",
    "players": {
      "id": 2,
      "name": "Player Two",
      "num": 99,
      "teamId": 1,
      "createdAt": "2020-06-17T14:23:03.000Z",
      "updatedAt": "2020-06-17T14:23:03.000Z"
    }
  }
]

但我需要得到这个:

代码语言:javascript
复制
[
  {
    "id": 1,
    "name": "My Team",
    "createdAt": "2020-06-17T14:23:03.000Z",
    "updatedAt": "2020-06-17T14:23:03.000Z",
    "players": [
      {
        "id": 1,
        "name": "Player One",
        "num": 10,
        "teamId": 1,
        "createdAt": "2020-06-17T14:23:03.000Z",
        "updatedAt": "2020-06-17T14:23:03.000Z"
      },
      {
        "id": 2,
        "name": "Player Two",
        "num": 99,
        "teamId": 1,
        "createdAt": "2020-06-17T14:23:03.000Z",
        "updatedAt": "2020-06-17T14:23:03.000Z"
      }
    ]
  }
]

我不知道我是不是做错了什么,或者是sequelize-typescript的问题,还是sequelize的问题。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-18 03:12:24

如果在查询选项中指定:raw: true,就会发生这种情况。

代码语言:javascript
复制
Team.findAll({
        include: [
            Player
        ],
        raw: true // <-- problem
    }
)

结果如下:

代码语言:javascript
复制
[
  {
    "id": 1,
    "name": "Team 1",
    "players.id": 1,
    "players.name": "Player 1",
    "players.num": 1,
    "players.teamId": 1
  },
  {
    "id": 1,
    "name": "Team 1",
    "players.id": 2,
    "players.name": "Player 2",
    "players.num": 2,
    "players.teamId": 1
  }
]

删除它:

代码语言:javascript
复制
Team.findAll({
        include: [
            Player
        ]
    }
)

结果如下:

代码语言:javascript
复制
[
   {
      "id":1,
      "name":"Team 1",
      "players":[
         {
            "id":1,
            "name":"Player 1",
            "num":1,
            "teamId":1
         },
         {
            "id":2,
            "name":"Player 2",
            "num":2,
            "teamId":1
         }
      ]
   }
]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62431589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档