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