だから私はこの2つのスキーマを持っています
スキーマ 1
type Permission {
relation: Relation
}
enum Relation {
ONE
TWO
THREE
}
スキーマ 2
type Permission {
relation: Relation
}
enum Relation {
FOUR
FIVE
SIX
}
期待される結果は次のようになります: (しかし、私はさまざまなアイデアを受け入れることができます) マージ後に作成したいクエリは次のとおりです。
{
permissions{
relation
}
}
そして、次のような結果を得る
"permissions": [
{
"relation": "ONE"
},
{
"relation": "SIX"
}
]
また
"permissions": [
{
"relation": "schema1ONE"
},
{
"relation": "schema2SIX"
}
]
そして、次のような突然変異:
mutation{
createPermission(
relation: ONE
){
relation
}
}
mutation{
createPermission(
relation: SIX
){
relation
}
}
また
mutation{
createPermission(
relation: schema1ONE
){
relation
}
}
mutation{
createPermission(
relation: schema2SIX
){
relation
}
}
私はtransformSchema
graphql-toolsで関数を使用しようとしていますが、正しく理解できません:
const Schema1 = await getRemoteSchema('schema1_url', 'schema1');
const Schema2 = await getRemoteSchema('schema2_url', 'schema2');
const schemas = [Schema1, Schema2]
const schema = mergeSchemas({
schemas: schemas,
resolvers: {}
});
getRemoteSchema 定義
export const getRemoteSchema = async (uri: string, schemaName: string): Promise<GraphQLSchema> => {
const httpLink = new HttpLink({ uri, fetch });
const schema = await introspectSchema(httpLink);
const executableSchema = makeRemoteExecutableSchema({
schema,
httpLink,
});
// transform schema by renaming root fields and types
const renamedSchema = transformSchema(
executableSchema,
[
new RenameTypes(name => {
if (name == 'Relation') {
return schemaName + name
} else {
return name
}
}),
// new RenameRootFields((operation, name) => `${schemaName}_${name}`)
]
);
return renamedSchema;
}
私はこのグリッチを作成しましたhttps://glitch.com/edit/#!/schema-stitching-conflict ということで、問題が見やすくなりました。