要解决“AWS AppSync GraphQL API仅从DynamoDB返回20个项目”的问题,您需要在AppSync API的模式文件中进行更改。以下是一个示例解决方案:
打开您的AppSync API的模式文件。这通常是一个名为schema.graphql的文件。
在模式文件中,查找您要更改的查询类型。假设您要更改名为listItems的查询类型。
在listItems查询类型中,找到与DynamoDB数据源相关的解析器。这通常是一个名为resolver的字段。
在resolver字段中,添加一个limit参数,用于指定从DynamoDB返回的项目数。示例如下:
type Query {
listItems(limit: Int): [Item]
}
limit参数的值,并将其传递给DynamoDB查询。以下是一个使用AWS SDK for JavaScript的示例代码:const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient();
// ...
const resolvers = {
Query: {
listItems: async (parent, args) => {
const { limit } = args;
const params = {
TableName: 'YourDynamoDBTable',
Limit: limit,
};
try {
const data = await docClient.scan(params).promise();
return data.Items;
} catch (error) {
console.error(error);
throw new Error('Error retrieving items from DynamoDB');
}
},
},
};
现在,您可以在使用listItems查询时传递limit参数来限制从DynamoDB返回的项目数量。例如,listItems(limit: 20)将返回最多20个项目。