Я пытаюсь обновить таблицу в Hasura. Я написал приведенный ниже запрос, чтобы обновить строку в таблице users
, где id
(первичный ключ) равен переданному id
из переменной. Если id
совпадает, обновите поле account_id
, которое содержит nullable
и unique
внутри хасуры.
const query = `mutation updateAccountId($id: String!, $account_id: String) {
update_users(where: {id: {_eq: $id}}, _set: {account_id: $account_id}){
affected_rows
}
}`;
fetch("https://xyz.hasura.app/v1/graphql", {
method: "post",
headers: {
"content-type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
query,
variables: {
id: "P9gc6WanL9YAy7JdD6pEbcfULYt2",
account_id: "3afc4fds2ds4",
},
}),
}).then((response) => {
console.info(
response,
);
});
Я получаю следующую ошибку после нескольких попыток. Не знаю, является ли это синтаксической ошибкой graphql или чем-то, связанным с хасурой.
{
"errors": [
{
"extensions": {
"code": "validation-failed",
"path": "$.selectionSet.update_users"
},
"message": "'update_users' has no argument named '_set'"
}
]
}
Я протестировал запрос внутри графической консоли hasura, там все работает нормально. Но когда я пытаюсь это сделать из почтальона или напрямую из кода, он выдает ошибку.
Решено. Проблема была в том, что я не включил разрешение на обновление таблицы users
внутри hasura, поэтому я получил эту ошибку.
Не очень хорошее сообщение об ошибке от Хасуры!
Синтаксис GraphQL в порядке. Проверьте параметры
update_users
— похоже,_set
там нет. Лучше всего проверить свои запросы на игровой площадке/graphiql перед тем, как зафиксировать их в коде.