在 GraphQL 中使用布尔过滤器查询时,如何覆盖“无过滤器”的情况?

时间:2021-05-07 14:34:29

标签: javascript reactjs graphql graphql-js react-query

我的前端有以下钩子/查询,它获取一些文章并有一个过滤器,因此它只能获取已校对的文章或所有尚未校对的文章:

export default function useArticles(isProofread) {
  return useQuery("articles", async () => {
    const { articles } = await request(
      endpoint,
      gql`
        query {
          articles(isProofread: ${isProofread}) {
            id
            title
          }
        }
      `
    )
    return articles
  })
}

我不明白如何获取所有文章?我总是传递 isProofread,它要么是 true,要么是 false。但我很难理解我怎么会根本不把它传递给我的查询?我试过不将变量传递到函数中,但是 undefined 仍然会传递到查询模板中,给我一个错误。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

<块引用>

我在后台也有同样的问题...

看起来你也负责 API。

您的 API 应该:

  • 使用有意义的名称:
    • isProofread 应该是 [of entry] 的道具;
  • 肯定处理 undefined - 缺乏价值也是一种价值/状态
    • 例如if (undefined != args.proofread) filters['proofread'] = args.proofread;
  • 支持 where 变量/参数/条件:
    • where:{ proofread: { eq: false } };
    • where:{ proofread: { in: [false, true] } } - 等于 undefined;