0



我在微服务架构中使用 lighthouse-php 作为 Api Gateway。
因此,对于我所有的类型,我都会通过 Guzzle 在内部提出请求。
但我需要实现适用于任何类型的过滤器,并在进行查询时提供灵活性。

我需要实现这样的查询:

query news (
        order_by: {publication_date: desc}
        where: {
            _or: {categories_id: { _eq: 1 }, title: { _ilike: "news" } }
        }
        limit: 10
        offset: 20
    ) {
      id     
      category_name: name
      photo
      publication_date
      text
      title
    }

但我不知道如何实现这个接收复合对象的“where”过滤器,如本例所示。

请记住,此查询不会使用 lumen 内的任何模型,因为它将是一个自定义查询,它将向新闻微服务发出请求。我需要的是我的查询接收来自何处、限制和顺序的任何内容的方式,以便根据请求发送它。但我不知道如何在方案中构建这样的东西。

有人知道怎么做吗?
谢谢朋友。

4

1 回答 1

0

是的你可以。刚才我正在制作一个组件,它将接收在 graphql 查询中过滤的条件,所以我需要where用这些条件填充过滤器的参数。

想象一下以下架构:

type News{
 id: ID!
 title: String!
 views: Int!
}
type Query{
 getNews(where: _ @whereConditions(columns:["title", "views"])) : [News!] @all
}

我们可以where稍后进行查询并填充变量

query GetNews($whereNews: [GetNewsWhereWhereConditions!]){
 getNews(where: {OR: $whereNews}){
  title
  views
 }
}

查询时,我们可以填充发送对象的变量,例如

{
 "where":[
   {"column": "TITLE", "operator": "LIKE", "value": "Amazing title"},
   {"column": "VIEWS", "operator": "GTE", "value": 10,
  ]
}
于 2020-12-24T13:45:46.040 回答