使用 AWS Amplify 从 DynamoDB 查询数据
Querying data from DynamoDB using AWS Amplify
我有一个 React 应用程序,我正在使用 AWS amplify。我的问题是,当我从 DynamoDB 查询数据时,是通过 AWS AppSync 的正确方法,然后我是否有一个查询数据库的 lambda 函数,或者 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,
};
}
};
我有一个 React 应用程序,我正在使用 AWS amplify。我的问题是,当我从 DynamoDB 查询数据时,是通过 AWS AppSync 的正确方法,然后我是否有一个查询数据库的 lambda 函数,或者 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,
};
}
};