0

试图让“对象过滤”与 apolo-server 和 vuex-orm-graphql 一起使用。

堆:

  • 后端:nodejs、apollo-server
  • 前端:vue/vuex-orm + vuex-orm-graphql-plugin。该应用程序.fetch()根据文档中描述的“过滤器对象”实现:
Comment.fetch({ postId: '15', deleted: false });

我无法让客户端发送查询,因为我不知道如何为“过滤器对象”案例定义查询架构。

尝试了几种方法,例如:

input FilterObject {
  postId: String
  deleted: Boolean
}

type query {
  comments(filter: FilterObject)
}

未发送 graphql 查询请求,报错:

"Cannot query field \"nodes\" on type \"Comments\"."

如果我稍微修改一下架构,我可以让查询发送,但是它会出错关于filter字段类型错误。

需要如何定义模式才能使过滤器功能正常工作?

4

1 回答 1

0

更新:

我不确定这是实现目标的最佳方式,但我发现使用“光标”概念可以解决问题。

我定义了一个包含过滤字段的“过滤器”输入类型。

接下来,对于查询输出,有一个包含“节点”字段的新游标类型。请注意,nodes 字段是一个查询类型的数组。

所以它最终是这样的:

input ConfigFilter {
    services: [String]!
}
type ConfigCursor {
    cursor: String!
    nodes: [Config!]
}
type Config {
    id: ID!
    service: String!
    data: Blackbox
}

正如所指出的,我发现并确认测试了它与 vuex-orm 和相关的 graphql 插件一起工作。

希望它有帮助!

于 2021-07-05T19:40:47.543 回答