Федерация Аполлона: как изменить типы полей в интегрированном графике - PullRequest
0 голосов
/ 27 февраля 2020

У нас есть несколько внутренних служб, использующих 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 ╚════════╧════════════════════════════════════════════════════════════════════════╝

...