AWS GET-запрос, возвращающий сетевую ошибку при вызове с клиента - PullRequest
0 голосов
/ 21 января 2020

У меня есть функция GET, остальная в проекте, для вывода списка всех элементов в моей динамической базе данных, которая отлично работает, однако, когда я использую ее снова, но нацеливаюсь на элемент с указанным c идентификатором, я получаю эту сетевую ошибку. Я запустил функцию в lamdba напрямую, и она работает, поэтому я немного запутался.

Вот вызов:

import React, { useRef, useState, useEffect } from "react";
import { API } from "aws-amplify";

export default function Sites(props) {
  const file = useRef(null);
  const [site, setSite] = useState(null);
  const [content, setContent] = useState("");

  useEffect(() => {
    function loadSite() {
      return API.get("sites", `/sites/${props.match.params.id}`);
    }

    async function onLoad() {
      try {
        const site = await loadSite();
        const { content } = site;

        console.log(content);

        setContent(content);
        setSite(site);
      } catch (e) {
        alert(e);
      }
    }

    onLoad();
  }, [props.match.params.id]);

  return (
  <div className="Sites"></div>
  );
}

РЕДАКТИРОВАТЬ:

Также вот маршрут со страницы элементов списка:

<AppliedRoute path="/sites/:id" exact component={Sites} props={childProps} />

Код метода:

import * as dynamoDbLib from "./libs/dynamodb-lib";
import { success, failure } from "./libs/response-lib";

export async function main(event, context) {
  const params = {
    TableName: "sites",
    // 'KeyConditionExpression' defines the condition for the query
    // - 'userId = :userId': only return items with matching 'userId'
    //   partition key
    // 'ExpressionAttributeValues' defines the value in the condition
    // - ':userId': defines 'userId' to be Identity Pool identity id
    //   of the authenticated user
    KeyConditionExpression: "userId = :userId",
    ExpressionAttributeValues: {
      ":userId": event.requestContext.identity.cognitoIdentityId
    }
  };

  try {
    const result = await dynamoDbLib.call("query", params);
    // Return the matching list of items in response body
    return success(result.Items);
  } catch (e) {
    console.log(e);
    return failure({ status: false });
  }
}

Также после тестирования в AWS API-шлюзе я получаю сообщение об ошибке 500 со следующими журналами:

https://pastebin.com/FHQnZAqt

1 Ответ

1 голос
/ 22 января 2020

В моем коде отсутствовала реализация маршрута API GET / user / {id}, и это вызвало ответ 500.

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