如何通过 Apollo 联邦联合自定义标量类型交叉子图?

问题描述 投票:0回答:1

我在 apollo 服务器中定义了下面的 graphql 模式,作为 Apollo 联合路由器后面的子图。

extend schema @link(url: "https://specs.apollo.dev/federation/v2.0", import: ["@key", "@shareable"])

  scalar DateTime @shareable

  type _Service {
    sdl: String
  }  

  # This "Book" type defines the queryable fields for every book in our data source.
  type Book {
    title: String
    author: String
    date: DateTime
  }

它有一个自定义标量类型

DateTime
。我将其标记为
@sharable
,以便使该类型在其他子图中可见。但是当我尝试启动这个 Apollo 服务器时,我收到以下错误:

GraphQLError: Directive "@shareable" may not be used on SCALAR.

它说

@shareable
不可共享。如何使自定义类型在其他子图中可用?

graphql apollo apollo-federation
1个回答
0
投票

你需要注册标量,给它一个上下文:

extend schema @link(url: "https://my-whatever-spec--the-address-does-not.matter/json/v1.0", import: ["JSON"])

scalar JSON

type User {
  details: JSON @shareable
}

在你的其他子图中,你做同样的

@link
事情。

© www.soinside.com 2019 - 2024. All rights reserved.