J'ai créé une requête GraphQL qui devient complexe dans les conditions, mais dans le client iOS Apollo GraphQL, il n'y a aucun moyen de modifier la requête après la compilation du projet. Le client Apollo GraphQL iOS donne la possibilité de modifier les variables définies dans la requête mais pas la requête elle-même.

Ma requête Lighthouse GraphQL d'origine est comme suit;

query ($first:Int, $page:Int) {
    my_listings(
        where: {
            AND: [
                { column: NET_AREA, operator: GTE, value: 200 }
            ]
        }
        orderBy: [
            { column: ID, order: ASC }
            ]
        first: $first
        page: $page
    ) {
        data {
            ...listingFields
        }
        paginatorInfo {
            currentPage
            lastPage
        }
    }
}

La requête Altered Lighthouse GraphQL est comme ceci, n'a ajouté que la variable $conditions qui est de type MyListingsWhereWhereConditions.

query($first: Int, $page: Int, $conditions:MyListingsWhereWhereConditions) {
  my_listings(
    where: $conditions
    orderBy: [{ column: ID, order: ASC }]
    first: $first
    page: $page
  ) {
    data {
      ...listingFields
    }
    paginatorInfo {
      currentPage
      lastPage
    }
  }
}

Lorsque je donne les variables suivantes dans la deuxième requête, le serveur Lighthouse me renvoie le message suivant

{
  "first": 1,
  "page": 1,
  "conditions": {"AND": {"column": "PRICE", "operator": "LTE","value": "190"}}
}

Message d'erreur

Variable \"$conditions\" got invalid value {\"AND\":{\"column\":\"PRICE\",\"operator\":\"LTE\",\"value\":\"190\"}}; Expected type MyListingsWhereWhereConditions to be an object at value.AND.column.

Existe-t-il un moyen de donner ces conditions dans une variable ? Sans cela, je ne pouvais pas trouver un moyen de changer la condition sur le client iOS.

0
Can Atuf Kansu 17 nov. 2020 à 17:04

1 réponse

Meilleure réponse

"ET" doit contenir un tableau d'objets, pas d'objet.

"conditions": {"AND": [{"column": "PRICE", "operator": "LTE","value": "190"}}]
1
Bartłomiej Gajda 17 nov. 2020 à 19:15