【发布时间】:2021-03-20 22:02:18
【问题描述】:
我有一个包含两个表的数据库:races 和languages,以及一个连接表races_languages。 这个想法是一个种族可以说多种语言,一种语言可以被多个种族说。
这是为我生成的架构棱镜:
model Language {
id Int @id @default(autoincrement())
name String @unique
races_languages RaceLanguage[]
@@map("languages")
}
model Race {
id Int @id @default(autoincrement())
name String @unique
races_languages RaceLanguage[] @relation("racesToraces_languages")
@@map("races")
}
model RaceLanguage {
race_id Int
language_id Int
languages Language @relation(fields: [language_id], references: [id])
races Race @relation("racesToraces_languages", fields: [race_id], references: [id])
@@id([race_id, language_id])
@@map("races_languages")
}
到目前为止,我已经设法允许这样的查询工作:
{
races {
id
name
races_languages {
languages {
name
}
}
}
}
我想知道是否有一种方法可以让 GraphQL 查询看起来像上面这样:
{
races {
id
name
languages {
name
}
}
}
有没有办法使races_languages 部分变平?如果我想保留races_languages 中的另一个字段,使其看起来像这样:
{
races {
id
name
languages {
somethingFromRacesLanguages
name
}
}
}
我的解析器如下所示:
Query: {
races: (root, args, { db }) =>
db.race.findMany({
include: {
races_languages: { include: { languages: true } },
},
}),
},
【问题讨论】:
标签: postgresql prisma