Мутация graphQL с параметрами выдает ошибку: в скалярах недопустимые переменные проверки недопустимы - PullRequest
1 голос
/ 20 марта 2019

Я использую Hasura и БД PostGres.Вот мутация GraphQL

mutation submitBeacon($thing_uid: Int, $x: Int, $y: Int, $z: Int){
            insert_conf_thing(objects:
              [{thing_uid: $thing_uid, my_coordinates: {type: "Point", coordinates: [$x, $y, $z]}}]) {
            returning {
              thing_uid
              my_coordinates
            }   } }

Переменные запроса

{
  "thing_uid": 1744,
  "x": 2,
  "y": 3,
  "z": 4
}

А вот и ответ на запрос

{
  "errors": [
    {
      "extensions": {
        "path": "$.selectionSet.insert_conf_thing.args.objects[0].my_coordinates",
        "code": "validation-failed"
      },
      "message": "variables are not allowed in scalars"
    }
  ]
}

Типы БД Postgres: thing_uid это BigInt my_coordinates это Геометрический тип

Если я заменим переменные $ x, $ y и $ z на 1, 2 и 3 в запросе,все работает нормально.

Почему запрос возвращает ошибку при использовании параметров?

1 Ответ

0 голосов
/ 22 марта 2019

Ответ от Хасуры Дискорд Чан:

Тип столбца my_coordinates - это геометрия, скалярный тип, поэтому мы можем написать запрос следующим образом

mutation submitBeacon($id: bigint, $geometry: geometry) {
  insert_conf_test(objects: {aBigInt: $id, aGeometry: $geometry}){
    returning{
      aBigInt
      aGeometry
    }
  }
}

С переменными запроса

{
"id": 4,
"geometry": {"type": "Point", "coordinates": [1, 2, 3]}
}
...