Apollo-link-rest: 无法在同一查询中组合带有w / graphql的其余部分

创建于 2018-04-04  ·  9评论  ·  资料来源: apollographql/apollo-link-rest

概括

我正在尝试将rest请求与graphql请求混合在一起。 这两个请求都引用相同的资源,并且在单独执行时可以工作。 但是,当尝试同时执行两者时

const QUERY_AUTHORS_AND_PEOPLE = gql`
    query {
        people @rest(type: "[Person]", path: "authors/") {
            firstName
        }

        authors {
            id
            firstName
        }
    }

我收到以下错误

image

您可以在此处找到我所指的示例

blocking bug 🐛 has-reproduction help wanted 🛠

最有用的评论

实际上,我刚刚检查过,它已经是apollo实用程序的一部分。 @fbartho如果没有其他人正在研究它,我愿意接受它。 似乎是一个相对容易的修复。 不过,将需要想象一些各种测试方案...

所有9条评论

@ chimon2000-听起来像是个大错误,您是否愿意为我们提交可以重现此内容的单元测试?

或者,解决此问题的PR会更好。 我很乐意提供帮助,但是我当前的主要测试环境未使用真正的GraphQL服务器,因此我没有完全设置它来验证它是否有效。

@fbartho ,感谢您的快速回复。 我添加了示例存储库,其中包含用角度和(p)反应示例重现该问题所必需的代码,但是我也可以看到为此添加单元测试的信息。

我对阿波罗链接的工作方式并不特别熟练。

@fbartho ,我添加了一个PR失败测试供大家使用-确实是个问题,希望它有用。

从源头看,似乎只有一次调用forward将操作发送到下一个链接是here

我认为,如果我们想支持合并行为,则需要检查查询条中的非剩余部分,并将其转发到下一个链接。

我认为从apollo-link-state基本上复制此部分就足够了(与维护者进行协作以将这种逻辑提取到单独的包中可能更有意义,因为它对于链接构建器似乎确实有用)。

实际上,我刚刚检查过,它已经是apollo实用程序的一部分。 @fbartho如果没有其他人正在研究它,我愿意接受它。 似乎是一个相对容易的修复。 不过,将需要想象一些各种测试方案...

@paulpdaniels Dude,我很乐意。 请接受。

我要确保我们支持/不破坏特定的危险情况:

  • @rest()查询中嵌套@rest()并使用`@export(as:…)
  • @rest()嵌套在使用`@export(as:...)的服务器-graphql查询中
  • @client查询中嵌套@rest()
  • 确保这不会破坏Typename Patcher代码路径!

export指令在server-graphql查询中似乎不起作用。 我收到以下错误:未知指令“导出”。

@marcelombc ,这取决于您的服务器实现,我想, apollo-server是随盒提供的,但是我认为它不是必须符合规范。

@paulpdaniels你是对的。 我在服务器上使用石墨烯,我只需要创建一个自定义指令即可支持@export。 谢谢你的帮助。

此页面是否有帮助?
0 / 5 - 0 等级