visitObject上的匿名函数?

问题描述 投票:0回答:1

现在,当用户使用“ visitFieldDefinition”时,我在field.resolve函数中做了一些计算。有没有办法在visitObject级别执行此操作?

例如每当用户访问字段时,我都会更新数据库中的时间值。在对象级别进行一次查询可能会触发该处理几百次,这完全是多余的。在visitObject级别上是否有一些类似的field.resolve函数?

apollo-server
1个回答
0
投票

您可以有一个以OBJECT为目标的模式指令,该指令可循环访问该对象的字段并修改每个字段的解析程序。但是,解析器逻辑始终处于字段级别,因为仅字段被解析。如果您要重复的逻辑与传递给解析器的参数无关,则它可以驻留在visitObject内部,否则它必须位于解析器函数本身内。

如果您在解析器内部所做的工作是多余的,那么您可能可以缓存重复计算的任何值。缓存可以是指令类中的变量(在这种情况下,只有在重新启动进程时才将其清除),也可以将其注入上下文中(在这种情况下,它将是特定于请求的,并在请求完成后销毁) )。

© www.soinside.com 2019 - 2024. All rights reserved.