代码之家  ›  专栏  ›  技术社区  ›  PlayMa256

关于模式缝合的自定义指令

  •  0
  • PlayMa256  · 技术社区  · 7 年前

    我正在尝试将一个指令添加到一个从远程模式扩展的类型中。

       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
        }
       })
    

    我得到: Error: Unknown directive "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;
        };
      }
    }
    
    0 回复  |  直到 7 年前
    推荐文章