繁体   English   中英

使用 AWS Amplify 从 DynamoDB 查询数据

[英]Querying data from DynamoDB using AWS Amplify

我有一个 React 应用程序,我正在使用 AWS amplify。 我的问题是,当我从 DynamoDB 查询数据时,是通过 AWS AppSync 到 go 的正确方法,然后我有一个 lambda function 查询数据库还是 appsync 只是这样做? 这样做的正确途径是什么? 是 React->Appsync->lambda->DynamoDb 还是我遗漏了什么? 此外,dynamo db 是否需要位于 EC2 实例或 AWS fargate 之类的内部,还是可以单独放置? 谢谢!

你可以只做 React->AppSync->DynamoDb。 AppSync 具有可用于 DynamoDB 的一级集成,这意味着 DynamoDB 可以是 AppSync 数据源。 因此,您可以直接从 AppSync 查询、更新和删除 DynamoDb 中的项目,而无需通过 Lambda。

您可以先导出 GraphQl 生成的查询,然后使用此代码(GraphQl 生成这样的文件夹src/graphql/queries.js

const client = require("../common/gqlClient")();
const gql = require("graphql-tag");
const _ = require("lodash");

const { clubBySportStatus } = require("../common/queriesAndMutations");

    let allClubsList = async (sport) => {
      try {
         let clubsList;
         let clubsInfoList = [];
        let nextTokenInfo = null;
        do{ 
        let clubs = await client.query({
          query: gql(clubBySportStatus),
          variables: {
            sport: sport,
            eq: { status: "ACTIVE" },
          },
          limit: 100,
          nextToken: nextTokenInfo,
          fetchPolicy: "network-only",
        });
        clubsList = clubs.data.clubBySportStatus.items;
         clubsList.forEach((item) => clubsInfoList.push(item));
          nextTokenInfo = clubs.data.clubBySportStatus.nextToken;
        } while (Boolean(nextTokenInfo));
        if (clubsInfoList && clubsInfoList.length) {
          return {
            success: true,
            data: clubsInfoList,
          };
        }
      } catch (eX) {
        console.error(`Error in allClubsList: ${JSON.stringify(eX)}`);
        return {
          success: false,
          message: eX.message,
        };
      }
    };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM