whatsapp clone tutorialのすべてのコンポーネントを構築して起動しました。私の認証サーバーは、対称暗号化を使用して有効な JWT (jwt.io に従って) を生成しています。サインアップしてログインできるので、JWTはreact-appによって正しく渡されます。現在、react-app を使用してログインした直後に解決できない問題がいくつかあります。
ログイン後、ユーザーは にリダイレクトされ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()
これが空である理由は、おそらく私の hasura データベースが空であるためです。認証サーバー データベースにはユーザー (サインインしたユーザー) がいますがusers
、hasura のテーブルは空です。
users
hasuraのテーブルはどのように作成されますか?