如何在自定义指令上触发visitInputObject方法?

FunToCodeJavascript

我正在构建一个自定义指令,希望在其中验证整个输入对象。扩展类INPUT_OBJECTvisitInputObject方法上使用类型SchemaDirectiveVisitor

每次我使用输入类型运行变异时visitInputObject都不会运行。我已经使用了其他类型/方法visitObjectvisitFieldDefinition并且它们运行完美。但是,当尝试使用输入类型和方法时,它们不会触发。

我已经阅读了所有可以找到的可用文档。现在还不支持吗?

一些上下文代码(不实际):

directive @validateThis on INPUT_OBJECT

input MyInputType @validateThis {
  id: ID
  someField: String
}
type Mutation {
  someMutation(myInput: MyInputType!): SomeType
}
class ValidateThisDirective extends SchemaDirectiveVisitor {
  visitInputObject(type) {
    console.log('Not triggering');
  }
}
丹尼尔·雷登(Daniel Rearden)

SchemaDirectiveVisitor构建架构时,同时运行a的所有访问方法其中包括visitFieldDefinitionvisitFieldDefinition区别在于,当使用时visitFieldDefinition,我们经常这样做以修改resolve受访字段功能。在执行过程中将调用此函数。

您可以使用每种访问方法来修改各自的架构元素。您可以visitInputObject用来修改输入对象,例如从中添加或删除字段。您不能使用它来修改输出对象字段的解析逻辑。您应该使用visitFieldDefinition它。

visitFieldDefinition(field, details) {
const { resolve = defaultFieldResolver } = field
  field.resolve = async function (parent, args, context, info) {
    Object.keys(args).forEach(argName => {
      const argDefinition = field.args.find(a => a.name === argName)
      // Note: you may have to "unwrap" the type if it's a list or non-null
      const argType = argDefinition.type
      if (argType.name === 'InputTypeToValidate') {
        const argValue = args[argName]
        // validate here
      } 
    })    

    return resolve.apply(this, [parent, args, context, info]);
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在我的自定义指令上触发方法?

Kendo Grid->如何在“添加单击”按钮上触发自定义方法

如何在Strongloop上为自定义远程方法设置自定义架构

如何在自定义的角度指令上添加/设置验证(require,prestine等)

如何在生命周期事件上触发自定义函数?

如何在Google Apps脚本上设置自定义频率触发器

如何在Angular中的自定义错误验证上触发立即发生错误

如何在自定义指令中获取评估的属性

如何在angular中创建自定义指令

如何在自定义指令中检索ngmodel值

如何在自定义指令中获取$ routeParams

如何在自定义VueJS指令中声明变量?

如何在ui视图中显示自定义指令?

如何在自定义刀片指令中传递参数?

如何在angular js中实现自定义指令?

如何在角度触发自定义事件

ngAnimate-动画不会在重复的自定义指令上触发

如何在自定义组件上定义方法?在AngularJS 2中

如何使这个自定义指令更好?

如何从自定义指令发出?

如何使用自定义指令。

Angular自定义指令-$ scope。$ watch不触发

从自定义指令内部手动触发ngChange

Java EE-如何在具有自定义注释的方法上注入方法参数

自定义指令

如何在自定义类对象上使用pandas中的.loc方法?

如何在 JpaRepository 中定义自定义 findAll 方法?

如何在使用自定义配置提供程序时在 .Net Core 中的 IConfigurationProvider 中触发 Set 方法

如何在自定义listView上创建自定义listSelector