gpt4 book ai didi

graphql - 在GraphQL中,当大量使用 `resolveType`特征时,如何处理 `isTypeOf`和 `interfaces`?

转载 作者:行者123 更新时间:2023-12-01 22:26:26 26 4
gpt4 key购买 nike

我已经阅读了这个伟大的要点 - GraphQLInterfaceType

但仍有一些困惑:

  1. 真的有必要为所有 GraphQL 架构类型定义 ES6 类吗?
    • 这里主要关心的是:我们最终会得到大量空的 ES6 类 和等量的 GraphQL 类型
  2. 如果不是,那么在大量使用interfaces功能时如何正确处理resolveTypeisTypeOf
  3. 即使我为所有 GraphQL 类型定义了所有 ES6 类,但原始数据是在不同的地方使用不同的技术构建的,例如 grpc+protobuf 与这些类定义没有任何关系,那么 isTypeOf: (value) => value instanceof Dog 在这里如何工作?

最佳答案

resolveTypeisTypeOf 的实现非常灵活,原因是:它非常特定于应用程序。这取决于数据库、数据模型、类型的相似程度等等。某些后端可能为其所有模型拥有单独的 ES6 类,特别是在使用 ORM 时,它会在您查询数据库时创建这些类的实例。但 ORM 并不是必需的。并且您不需要实例化任何其他类来确定 GraphQL 类型。

在某些情况下,您可以仅根据对象的属性来确定类型。如果您的应用不是这种情况,您可以采取一些措施来提供提示。这是一个 SQL 示例。

SELECT
id,
body,
author_id,
post_id,
'Comment' AS "$type" -- leave a hint to resolve the type
FROM comments
UNION
SELECT
id,
body,
author_id,
NULL AS post_id,
'Post' AS "$type" -- leave a hint to resolve the type
FROM posts

此查询提供了“类型提示”,即一个附加的计算列,因此实现 resolveType 是一个简单的属性查找。其他 DBMS 可以使用类似的策略。

关于graphql - 在GraphQL中,当大量使用 `resolveType`特征时,如何处理 `isTypeOf`和 `interfaces`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43469685/

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