Graphql 关于模式缝合的自定义指令
我正在尝试将一个指令添加到一个从远程模式扩展的类型中Graphql 关于模式缝合的自定义指令,graphql,apollo,graphql-js,Graphql,Apollo,Graphql Js,我正在尝试将一个指令添加到一个从远程模式扩展的类型中 const extensionSchema = ` directive @upper on FIELD_DEFINITION extend type User { firstname: String @upper } `; // resolvedSchemas is an array of makeRemoteExecutableSchema coming from introspect
const extensionSchema = `
directive @upper on FIELD_DEFINITION
extend type User {
firstname: String @upper
}
`;
// resolvedSchemas is an array of makeRemoteExecutableSchema coming from introspection queries.
resolvedSchemas.push(extensionSchema);
return mergeSchemas({
schemas: resolvedSchemas,
schemaDirectives: {
upper: UpperCaseDirective
}
})
我得到:错误:未知指令“upper”。
。
我错过了什么
我的指示:
const { SchemaDirectiveVisitor } = require("graphql-tools");
const { defaultFieldResolver } = require("graphql");
module.exports = class UpperCaseDirective extends SchemaDirectiveVisitor {
visitFieldDefinition(field) {
const { resolve = defaultFieldResolver } = field;
field.resolve = async function (...args) {
const result = await resolve.apply(this, args);
console.log("RESULTADOOOO", result);
if (typeof result === "string") {
return result.toUpperCase();
}
return result;
};
}
}
我知道这个问题太老了,但我还是来了;您是将合并的模式添加到makeExecutableSchema还是将任何模式传递给apollo服务器构造函数?(我假设这是阿波罗服务器…你从哪里得到合并模式功能?