【问题标题】:Querying wordpress with meta queries from Gatsby使用来自 Gatsby 的元查询查询 wordpress
【发布时间】:2021-10-26 09:19:47
【问题描述】:

我正在尝试使用元查询从我的 Wordpress 后端获取数据。我正在使用这个插件: https://www.wpgraphql.com/extenstion-plugins/wpgraphql-meta-query/

我可以在 Wordpress 的 GraphiQL IDE 中运行我的查询,但不能在 Gatsbys GraphiQL 工具中运行。

我收到此错误: 字段“Query.allWpPage”上的未知参数“where”

查询:

query test {
  allWpPage(
    where: {metaQuery: {
      relation: OR,
      metaArray: [
        {
          key: "some_value",
          value: null,
          compare: EQUAL_TO
        },
        {key: "some_value",
          value: "536",
          compare: EQUAL_TO
        }
      ]
    }}
  ) {
    edges {
      node {
        id
        uri
      }
    }
  }
}

我试过删除缓存目录并重建,没有帮助。

澄清一下,我在运行其他查询和获取 ACL 数据方面没有任何问题。我(现在)唯一的问题是将 where 参数暴露给 Gatsby。

【问题讨论】:

    标签: wordpress graphql gatsby wp-graphql


    【解决方案1】:

    where 过滤器在 Gatsby 中受到限制。这里有详细的list of comparators,但它们是:

    • eq(等于)
    • ne(不等于)
    • in(包括)
    • nin(不包括)
    • ltltegtgte(分别小于、等于或小于、大于、等于或大于)
    • regex, glob(正则表达式)
    • elemMatch(元素匹配)

    另一方面,有一个filters available 的列表。在您的情况下,filter 就是您要查找的内容。您的最终查询应如下所示:

    query test {
      allWpPage(
       filter : {uri : {ne : "" }}
      ) {
        edges {
          node {
            id
            uri
          }
        }
      }
    }
    

    当然,根据您的需要调整filterelemMatch 应该也适合你。

    您需要为要匹配的对象的每个属性添加每个条件。


    为什么where 受到限制?

    因为它属于 Sift,这是 Gatsby 用来使用 MongoDB queries 的库,其中 where 可用。自 Gatsby 2.23.0(2020 年 6 月)以来,该库不再被使用。更多详情History and Sift

    很长一段时间,Gatsby 都使用 Sift 库,您可以通过它使用 JavaScript 中的 MongoDB 查询。

    不幸的是,Sift 与 Gatsby 的使用方式不一致,因此 编写自定义系统以慢慢替换它。这个系统被称为 “快速过滤器”,从 gatsby@2.23.0(2020 年 6 月)开始,Sift 库是 不再使用。

    【讨论】:

    • 感谢您的回答。但是,我要过滤的字段(上面的“some_value”)是“post object”类型的 ACL 字段。该字段未显示在“过滤器”下。它确实显示了我可以选择的字段,因此让该字段显示在 GraphQL 中没有问题。但我无法过滤它。
    • 我会将其设置为已接受的答案,因为它确实回答了我关于如何在 Gatsby 中显示“位置”的原始问题。我会为任何问题制定一个新问题。
    猜你喜欢
    • 2020-04-19
    • 2021-01-15
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2013-12-02
    相关资源
    最近更新 更多