当前位置: 首页 > 知识库问答 >
问题:

通过id的graphql类型解析器

孔安福
2023-03-14

我试图通过构建一个具有以下模式的服务器来熟悉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
}

并映射到以下数据

const games = {
    1: {
        id: 1,
        players: [2, 3],
        winner: undefined
    }
};
const players = {
    2: {
        id: 2,
        game: 1
    },
    3: {
        id: 3,
        game: 1
    },
};

在编写解析器时,我注意到很多样板代码——我必须为每个持有外键的对象成员编写概念上相同的字段解析器。

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)解析=

我看到使用AWS Amplify的@model指令可以实现这一点,但我想知道是否有一种比实现我自己的指令更标准的方法我遗漏了。

这是当前任何Graphql实现的特性吗?我在apollo graphql的文档(或graphql js)中找不到任何类似的东西。

谢谢


共有1个答案

沈永贞
2023-03-14

无法更改默认冲突解决程序。Apollo GraphQL只是将解析器映射传递给GraphQL工具,而GraphQL工具使用GraphQL jsgraphqljs在这里实现默认解析器并在这里使用它。

也许您可以尝试使用ES2015Proxy为对象中的解析器提供默认实现。但是,即使覆盖默认冲突解决程序,也会破坏使用实际默认冲突解决程序的所有位置。

 类似资料:
  • GraphQL中有几个地方需要解析,而不仅仅是中的。 后端API- -用户列表-最少信息-姓名、id 构建一个架构来执行以下查询 模式可以如下- 上述模式中的解析器需要在两个不同的地方包含/处理用户详细信息获取调用。1.用户列表-和2.。必须记住处理这种类型,其中您只有一个用户ID将其转换为实际用户。 在撰写本文时,GraphQL支持和上的。不可能为整个指定解析器-只有中的可以具有解析器。因此,如

  • 我有一个Kotlin密封类--和两个子类--和。我的应用程序需要传输用JSON序列化的pets集合。为了区分子类,我使用Jackson和注释。清单如下: 正确序列化和反序列化单个实例: 当宠物的集合被序列化和反序列化时,问题就出现了: Jackson在序列化过程中吞并了type属性,因此,无法: 有没有办法解决这个问题?还是变通办法? Jackson版本:2.9.0

  • 我正在这个名为Wertik JShttps://github.com/ilyaskarim/wertik-js库上工作,以使GraphQL Rest API更容易,在解析器中,当我控制台日志时,它显示未定义。对于每个模块,我都创建了动态解析器,让使用这个库的开发人员更容易。 行:https://github.com/ilyaskarim/wertik-js/blob/ec813f49a14ddd6

  • 我目前正在实现JWT身份验证,Passport.js到NestJS应用程序中。 在我的一些GraphQL解析器中,我需要访问当前已认证的用户。我知道passport会将经过身份验证的用户附加到请求对象上(至少我希望这是正确的),但是我不知道如何在解析器中访问请求对象。 我关注了问题https://github.com/nestjs/nest/issues/1326和问题中提到的链接https://

  • 本文向大家介绍通过实例解析PHP数据类型转换方法,包括了通过实例解析PHP数据类型转换方法的使用技巧和注意事项,需要的朋友参考一下 PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: (int)、(integer):转换成整形 (float)、(double)、(real):转换成浮点型 (string):转换成字符串 (bool)、(boolean):转换成布尔类型 (array):

  • 问题内容: 我知道hibernate最近在3.6中重做了它的类型系统。我认为这现在允许您将Java类与类型(或UserType)相关联。例如,我使用joda- time并具有几个UserType,它们将LocalDate和LocalDateTime映射到适当的SQL类型。 当使用对象时,这很好用,但是如果我想传递一个joda类型作为HQL参数,hibernate就会感到困惑,所以我必须记得每次打电