gpt4 book ai didi

node.js - sequelize/sequelize-typescript - findAll 和 HasMany 返回一个对象而不是数组

转载 作者:行者123 更新时间:2023-12-03 22:16:48 25 4
gpt4 key购买 nike

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

我有两张 table 。团队和球员。

团队可以有很多玩家,一个玩家属于一个团队。

我的模型:

@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
}

当我运行时:
Team.findAll({ include: [Player] })

我明白了:
[
{
"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"
}
}
]

但我需要得到这个:
[
{
"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 的问题。

有谁能够帮助我?

最佳答案

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

Team.findAll({
include: [
Player
],
raw: true // <-- problem
}
)

结果是:
[
{
"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
}
]

删除它:
Team.findAll({
include: [
Player
]
}
)

结果是:
[
{
"id":1,
"name":"Team 1",
"players":[
{
"id":1,
"name":"Player 1",
"num":1,
"teamId":1
},
{
"id":2,
"name":"Player 2",
"num":2,
"teamId":1
}
]
}
]

关于node.js - sequelize/sequelize-typescript - findAll 和 HasMany 返回一个对象而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62431589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com