[英]Graphql type resolver by id
我试图通过构建具有以下架构的服务器来熟悉 Graphql:
type Game
{
id: ID!
players: [Player!]!
winner: Player
...
}
type Player {
id: ID!
game: Game!
...
}
type Query {
getGame(id: ID!): Game
getPlayer(id: ID!): Player
}
和 map 到以下数据:
const games = {
1: {
id: 1,
players: [2, 3],
winner: undefined
}
};
const players = {
2: {
id: 2,
game: 1
},
3: {
id: 3,
game: 1
},
};
在编写解析器时,我注意到很多样板代码——我必须在概念上为每个持有外键的 object 成员编写相同的字段解析器。
const typedefs = {
Query: {
getGame: (_, {id}) => games[id],
getPlayer: (_, {id}) => players[id]
},
Game: {
winner: (game) => players[game.winner],
players: (game) => game.players.map(id => players[id])
},
Player: {
game: (player) => games[player.id]
}
}
有没有办法通过 ID 创建类型解析器? 例如, Player
字段或查询将始终由(id) => players[id]
解析,而 game 字段或查询将始终由(id) => games[id]
解析。
我看到这可以使用 AWS-Amplify 的@model
指令实现,但我想知道是否有更标准的方法我缺少而不是实现我自己的指令。
这是任何当前 Graphql 实现的功能吗? 我在 apollo-graphql 的文档(或 graphql-js 的文档)中找不到任何类似的东西。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.