我可以在 GraphQL 查询中将变量设置为可选吗?

Can I make variables optional in a GraphQL query?

我有一个包含变量 $filter 的查询,它是一个字符串。

此变量仅在用户表示他们想要过滤结果时才相关。如果用户不过滤,我希望返回所有符合条件的结果。

有没有办法在这个查询中省略过滤器变量?我尝试传递 null 但出现错误。

const NOTIFY_NEW_PUBLIC_FEELINGS = gql`
  subscription notifyNewPublicFeelings($page_id: uuid!, $filter: String!) {
    feelings(
      where: { is_public: { _eq: true }, page_id: {_eq: $page_id}, feeling: {_eq: $filter} }
      limit: 1
      order_by: { created_at: desc }
    ) {
      id
      created_at
    }
  }
`;

问题是您将 $filter 标记为 String!(!表示不可为空)。因此,传递 null 必然会导致问题。如果将字符串标记为可为空(仅 String,没有 !),则可以安全地传递 null