Я использую 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 мои_координаты — это Геометрический тип
Если я заменю в запросе переменные $x, $y и $z на 1, 2 и 3, все будет работать нормально.
Почему запрос возвращает ошибку, когда я использую параметры?
Да. Добавлю в описание.





Ответ от Hasura Discord chan:
Тип столбца 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]}
}
Используете ли вы Hasura на бэкэнде?