質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

apt-get

apt-getコマンドはUNIX系OSのパッケージのインストールなど、パッケージ管理を行うためのコマンドです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

受付中

Serverless Stack: GETリクエストでundefinedが返ってくる

607842
607842

総合スコア8

Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

apt-get

apt-getコマンドはUNIX系OSのパッケージのインストールなど、パッケージ管理を行うためのコマンドです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0回答

0評価

0クリップ

324閲覧

投稿2021/10/29 23:16

React/TypescriptとServerless Stackを用いたアプリ開発を行っております。GET APIを使ってdynamodbからユーザー情報を取得したいのですが、console.info('user function', user)で"undefined"が表示されます。

ただし、vscode's terminalでは以下のように表記されています。

GET /users/aaa@gmail.com 7aefa RESPONSE {"statusCode":200,"body":{"checkinDate":163,"storeName":"test_shop","email":"aaa@gmail.com","name":"aaa"}}.

Chromeのコンソールでは以下のようにエラーが出ています。

Error: Request failed with status code 500 at createError (createError.js:16) at settle (settle.js:17) at XMLHttpRequest.onloadend (xhr.js:54)

vscodeのターミナルとchromeのconsoleで言っていることが違います。 また、Cloud watchのログをチェックしたのですが、エラーらしきものは見つけることができませんでした。アドバイスや修正点を教えていただければ非常に助かりますので、何卒よろしくお願い致します

UserPage.tsx

tsx

import React, { useState, useRef, useEffect } from 'react' import { useParams } from 'react-router-dom' import { API } from 'aws-amplify' const UserPage: React.FC = () => { const [user, setUser] = useState([]) const { id }: { id: string } = useParams() useEffect(() => { function loadUser() { return API.get('users', `/users/${id}`) } async function onLoad() { try { const user = await loadUser().catch(e => console.error(e)) console.info('user function', user) setUser(user) } catch (e) { console.error(e) } } onLoad() }, [id]) return ( <> <h3>user{user}</h3> </> ) }

getUser.ts

ts

import handler from "./util/handler"; import dynamoDb from "./util/dynamodb"; export const main = handler(async (event: any) => { const params = { TableName: process.env.TABLE_NAME, Key: { storeName: "test_shop", email: event.pathParameters.id, }, }; const result = await dynamoDb.get(params); if (!result.Item) { throw new Error("Item not found."); } // Return the retrieved item return result.Item; });

handler.ts

ts

export default function handler(lambda: any) { return async function (event: any,context: any){ let body, statusCode; try { // Run the Lambda body = await lambda(event, context); statusCode = 200; } catch (e: any) { log.error(e); body = { error: e.message }; statusCode = 500; } // Return HTTP response return { statusCode, body, }; }; }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

apt-get

apt-getコマンドはUNIX系OSのパッケージのインストールなど、パッケージ管理を行うためのコマンドです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。