Федерация Apollo: как изменить типы полей в федеративном графике

У нас есть несколько серверных сервисов, использующих apollo (управляемый) шлюз федерации apollo. Теперь мы хотим изменить тип некоторых ID-полей в типах, которые используются несколькими службами (например, определены одним, расширены другим) следующим образом:

// service 1
type Book @key(fields: "bookID") {
  bookID: Int → ID
  bookName: String
}
// service 2
extend type Book @key(fields: "bookID") {
  bookID: Int → ID @external
  bookAuthor: String
}

Когда мы внесли это изменение, независимо от того, какая служба сначала была помещена в "Apollo Graph Manager", это дает нам следующую ошибку:

> apollo service:push --localSchemaFile=$SCHEMA --serviceName=$SERVICE_NAME --serviceURL=http://$SERVICE_NAME/graphql --tag=$GQL_TAG

// ...

32 *THE SERVICE UPDATE RESULTED IN COMPOSITION ERRORS.*
33 Composition errors must be resolved before the graph's schema or corresponding gateway can be updated.
34 For more information, see https://www.apollographql.com/docs/apollo-server/federation/errors/
35 ╔════════╤════════════════════════════════════════════════════════════════════════╗
36 ║ Change │ Description                                                            ║
37 ╟────────┼────────────────────────────────────────────────────────────────────────╢
38 ║ Error  │ [service2] Book.bookID -> Type `undefined` does not match the type     ║
39 ║        │ of the original field in service1 (`ID!`)                              ║
40 ╚════════╧════════════════════════════════════════════════════════════════════════╝

0 ответов

Другие вопросы по тегам