如何在 GraphQL 查询中使用变量和百分号 (%) 符号

3

我可以帮您翻译与 IT 技术相关的内容,以下是需要翻译的内容:

我有一个查询,想要通过查看与用户输入变量类似的内容来过滤结果。

这是我的查询:

query MyQuery($domain:String!, $hash:String!) {
  hashtags_hashtags(where: {domain: {_eq: $domain}}, limit: 15, offset: 5, order_by: {hashtag: asc}) {
    hashtag
    responses_languages(where: {language: {_eq: "english"}, hashtag: {_ilike: %$hash%}}) {
      hashtag
      response
    }
  }
}

当我在 Hasura 控制台测试 _ilike 过滤器时,我发现它只能识别像 "%cheese%" 这样的字符串。尽管百分号与字符串配合得很好,但是当我尝试使用变量 $hash 时,它就无法正常工作了。请问如何在 Hasura Graph QL 中使用变量进行 _ilike 操作?当然,我已经将 $hash 放在 _ilike 后面,但没有加上 % 符号却没有返回任何结果。只有当我使用普通字符串而不是变量时,它才有效。请指教如何在 Hasura Graph QL 中编写 _ilike + 变量。另外,我的项目是用 JavaScript 编写的。谢谢。
1个回答

10

查询“body”不适用于任何操作,不能进行连接、评估、字符串字面值等操作。

您必须将准备好的、早期准备好的字符串作为变量传递。

variables: {
  domain: "some domain",
  hash: `%${someHashVariable}%`
}

// in query simply 
// ...  hashtag: {_ilike: $hash}

非常感谢。我已经尝试了,但仍然出现错误。这真的很奇怪,因为这应该绝对有效。 - undefined
百分之百是我的错,代码里还有其他问题。谢谢! - undefined
问题在于数据被作为一个promise加载进来,这是一个不同的问题,但是我该如何异步调用我的查询,以便正确加载数据? - undefined
1
this.$apollo .query({ query: hashQuery, variables: { domain: this.selectedDomain, hash:$%{this.searchedHash}% } }) .then(({ data }: any) => { console.log(JSON.stringify(data.hashtags_hashtags)) this.hashtags = data.hashtags_hashtags }) - undefined
嗨!我有同样的问题,但我的问题是如何在REST API URL参数中使用它?你能帮我检查一下吗?谢谢https://stackoverflow.com/questions/69938925/searching-string-using-dynamic-variable-on-graphql-hasura - undefined
@AkoSi 不是一个GraphQL的问题....在GET方法中,谷歌/搜索"URL编码特殊字符",或许能找到相关上下文。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接