Hasura WhatsApp клон JWT шаблон - как заполняется таблица "пользователи"? - PullRequest
0 голосов
/ 13 октября 2019

Я собрал и запустил все компоненты для учебника по клонированию WhatsApp . Мой сервер аутентификации генерирует действительный JWT (согласно jwt.io) с использованием симметричного шифрования. Кажется, JWT корректно передается приложением реагировать, поскольку я могу зарегистрироваться и войти в систему. Теперь у меня есть некоторые проблемы, которые я не могу решить сразу после входа в систему с помощью приложения activ.

После входа наш пользователь перенаправляется на components/ChatsListScreen/ChatsList.tsx. Здесь мы хотим показать данные на основе подключенного пользователя (используя useMe()). Моя проблема в том, что useMe() возвращает пустой объект.

также я получаю следующую ошибку на сервере hasura (работает в Docker):

{"timestamp":"2019-10-13T08:21:26.663+0000","level":"error","type":"http-log","detail":{"operation":{"query_execution_time":null,"user_vars":{"x-hasura-role":"user","x-hasura-user-id":"4"},"error":{"path":"$.variableValues","error":"expecting a value for non-nullable variable: userId of type: Int! in variableValues","code":"validation-failed"},"request_id":"5a8c6897-69dd-410e-bd10-f637750e1957","response_size":148,"query":{"variables":{},"operationName":"ChatsListQuery","query":"query ChatsListQuery($userId: Int!) {\n  chat(order_by: [{messages_aggregate: {max: {created_at: desc}}}]) {\n    ...chat\n    users(where: {user_id: {_neq: $userId}}) {\n      user {\n        ...user\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n}\n\nfragment chat on chat {\n  id\n  name\n  picture\n  owner_id\n  created_at\n  messages(order_by: [{created_at: asc}]) {\n    ...message\n    __typename\n  }\n  __typename\n}\n\nfragment message on message {\n  id\n  chat_id\n  sender {\n    id\n    name\n    __typename\n  }\n  content\n  created_at\n  __typename\n}\n\nfragment user on users {\n  id\n  username\n  name\n  picture\n  __typename\n}\n"}},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/graphql","ip":"172.18.0.1","method":"POST"}}}

Как вы можете видеть x-hasura-user-idПередан правильно, но запрос ожидает userId, который является пустым.

Из моих журналов, и, как я понимаю, это связано с тем, что fetchUser, который питаетuseMe() крючок пуст.

Теперь причина, по которой он пуст, скорее всего, в том, что моя база данных хасуры пуста. В базе данных сервера авторизации есть пользователи (те, которые вошли в систему), но таблица users от hasura пуста.

Как заполняется таблица users от hasura?

1 Ответ

1 голос
/ 13 октября 2019

В этом шаблоне предполагается, что и сервер аутентификации, и API-интерфейсы Hasura выполняют чтение и запись в одну и ту же базу данных, при этом таблица users является общей сущностью.

После регистрации пользователь вставляется в базу данных db (таблица пользователей). ). Вот источник о том, где это происходит на сервере аутентификации.

Если вы настроили сервер аутентификации для записи в другую базу данных, то вам нужно выполнить синхронизацию пользовательских данных после регистрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...