【问题标题】:Querying data from DynamoDB using AWS Amplify使用 AWS Amplify 从 DynamoDB 查询数据
【发布时间】:2020-03-24 17:40:09
【问题描述】:

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

【问题讨论】:

    标签: javascript reactjs amazon-dynamodb aws-amplify aws-appsync


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以先导出 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,
              };
            }
          };
      

      【讨论】:

        猜你喜欢
        • 2017-10-13
        • 1970-01-01
        • 2021-06-04
        • 2019-04-21
        • 2020-09-20
        • 2021-04-11
        • 1970-01-01
        • 2021-03-21
        • 2023-02-01
        相关资源
        最近更新 更多