Ich habe ein Problem in Bezug auf GraphQL Schema Stitching. Ich habe zwei Graphql Schemen:Apollo Graphql Schema Stitching Konflikt
type Name {
firstname: String!
lastname: String!
}
type Address {
street: String!
number: Int!
}
type User {
name: Name!
address: Address!
}
type Query {
user(userId: String!): User
}
und
type User {
age: String!
}
type Query {
user(userId: String!): User
}
jetzt habe ich versucht, das Schema mit graphql-Tool der mergeSchemas
Funktion zu fusionieren:
const schema = mergeSchemas({
schemas: [schema1, schema2]
});
Aber statt dem, was ich bin versuchen zu erreichen (ein erweiterter Benutzertyp):
type Name {
firstname: String!
lastname: String!
}
type Address {
street: String!
number: Int!
}
type User {
name: Name!
address: Address!
age: String!
}
type Query {
user(userId: String!): User
}
Es ergab sich: Typ Name { Vorname: String! Nachname: String! }
type Address {
street: String!
number: Int!
}
type User {
name: Name!
address: Address!
}
type Query {
user(userId: String!): User
}
Nur einer der UserTypes wird im letzten Schema angezeigt. Ich versuchte mit der onTypeConflict
API in mergeSchemas
, um den Typ zu erweitern, aber ich habe keine Ergebnisse erzielt.
Gibt es eine Möglichkeit, Schemas zusammenzuführen, indem Typen bei Konflikten erweitert werden?
helfen Was Sie Ziel? Sie können nur einen Benutzertyp haben. Möchten Sie sie zusammenführen oder möchten Sie nur den zweiten Benutzertyp? Was in Ihrem Fall passiert, ist das Standardverhalten, das den ersten gefundenen Typ aller Typen mit demselben Namen annimmt. –
Idealerweise möchte ich den Benutzertyp erweitern. Ich habe meine Frage entsprechend bearbeitet. –
Das Problem ist, dass dies keine lokalen Schemas sind, daher kann ich nicht einfach "type User" in "extend type User" ändern. Ich hole sie mit 'makeRemoteExecutableSchema' –