当前位置: 首页 > 知识库问答 >
问题:

Apollo服务器:将参数传递给嵌套解析器

向实
2023-03-14
{
    p1: property(someArgs: "some_value") {
        id
        nestedField {
            id
            moreNestedField {
                id
            }
        }
    }
}
property: (_, {someArgs}, ctx) => {
    ctx.someArgs = someArgs;

    // Do something
}

但是这不起作用,因为上下文是在所有解析器之间共享的,因此如果我在查询上有多个属性,上下文值就不好。

我还尝试在嵌套解析器上使用信息上可用的路径。我可以转到属性字段,但这里没有参数...

我还尝试在info上添加一些数据,但这些数据不在嵌套解析器上共享。

共有1个答案

甘永春
2023-03-14

可以使用当前返回的值将参数传递给子解析器。稍后将从响应中删除其他数据。

我将“borow”Daniel的代码,但没有特定的params--将arg作为引用传递下去(适合/更干净/更易读):

function propertyResolver (parent, args) {
  const property = await getProperty()
  property.propertyArgs = args
  return property
}

// if this level args required in deeper resolvers
function nestedPropertyResolver (parent, args) {
  const nestedProperty = await getNestedProperty()
  nestedProperty.propertyArgs = parent.propertyArgs
  nestedProperty.nestedPropertyArgs = args
  return nestedProperty
}

function moreNestedPropertyResolver (parent) {
  // do something with parent.propertyArgs.someArgs
}

正如Daniels所说,这种方法的功能有限。您可以链接结果,并在子解析器中有条件地生成一些内容。您将有父级和筛选的子级...而不是使用子级条件筛选的父级(就像在联接表中的SQL...WHERE...and...and...),这可以在父级解析器中完成。

 类似资料:
  • 问题内容: 这是我的代码: 当我评估f(0)时,将出现错误“ x在分配之前被引用”。 但是,当我使用“ print x”代替“ x = x + 1”时,它将起作用。 似乎在g的范围内,我只能将x用作“使用事件”,而不能用作“绑定事件”。我想问题是f仅将x的值传递给g。 我是否正确理解?如果不是,有人可以解释为什么在引用之前未定义“ x = x + 1”的左侧吗? 谢谢 问题答案: 您正确理解了它。

  • 问题内容: 这是我的config.json: 这是我的bash命令: 输出: 因此$ PRJNAME是prj1,但是第一次调用仅输出。 有人能帮我吗? 问题答案: 您的示例中的jq程序实际上会尝试查找名为的键。请尝试以下操作:

  • 问题内容: 是否可以将参数传递给filter函数,以便您可以按任何名称进行过滤? 就像是 问题答案: 实际上,还有另一种(也许是更好的解决方案),您可以使用angular的本机“过滤器”过滤器,并且仍将参数传递给自定义过滤器。 考虑以下代码: 要进行此工作,您只需将过滤器定义如下: 如您在这里看到的,weDontLike实际上返回另一个函数,该函数的范围内有您的参数以及来自过滤器的原始项。 我花了

  • 问题内容: 我正在尝试调用webservice方法并将参数传递给它。 这是我的网络服务方法: 这是我的目标C代码: 因此,当我致电GetHelloWorld时,它的效果很好,并且: 显示HelloWorld,但是如何调用GetHelloWorldWithParam?如何传递参数? 我尝试: 并将以下两行添加到请求中: 我有错误: 谢谢您的帮助!泰迪熊 问题答案: 我已经使用了您的代码并进行了一些修

  • 我需要使用Liferay的索引来搜索与确定字符串匹配的用户,这可以通过使用UserLocalServiceImpl搜索(长公司ID、字符串关键字、int状态、LinkedHashMap)实现 此外,我希望能够通过过滤用户。 我希望我可以将用户组ID传递给这个函数到参数中,但我似乎找不到任何关于参数应该是什么的文档。 通过查看源代码,它看起来像是被添加到用于生成查询的中,但我无法跟踪代码到随后使用的