«такого типа не существует в схеме: ‘timetz'» в hasura

#graphql #hasura

#graphql #hasura

Вопрос:

 mutation MyMutation($title: String!, $date: date!,$stime: timetz!  , $etime: timetz!
 ) {
  insert_schedules(objects: {title: $title , date: $date, start_time: $stime, end_time:$etime}) {
    affected_rows
  }
}`
  

Ошибка

 {
  "errors": [
    {
      "extensions": {
        "path": "$.variableValues",
        "code": "validation-failed"
      },
      "message": "no such type exists in the schema: 'timetz'"
    }
  ]
}
  

Здесь я использую timetz, но он не работает.Даже использование time не работает.Что использовать.

Ответ №1:

Это потому type start_time , что столбцов и / или end_time нет timetz .

Есть два решения:

  1. изменение типа этих столбцов на timetz; может быть достигнуто путем запуска этого sql в качестве миграции
 alter table schedules alter column start_time type timetz;
alter table schedules alter column end_time type timetz;
  

  1. или, если ваш столбец имеет тип timestamp с часовым поясом, вы можете просто сделать:
 mutation MyMutation($title: String!, $date: date!, $stime: timestamptz!, $etime: timestamptz!) {
  insert_schedules(objects: {title: $title, date: $date, start_time: $stime, end_time: $etime}) {
    affected_rows
  }
}
  

Хотя оба timetz и timestamptz поддерживаются hasura, timestamptz хранит как дату, так и время с часовым поясом и является более рекомендуемым.
Проверьте эту страницу, чтобы узнать больше об их различиях.
https://www.postgresql.org/docs/current/datatype-datetime.html