要使用AppSync和DynamoDB按所有者筛选数据,你可以按照以下步骤进行操作:
创建DynamoDB表格:
创建AppSync API:
定义GraphQL模式:
getItemsByOwner
,它将接受所有者ID作为参数,并返回与该所有者相关的数据。实现数据源和解析器:
getItemsByOwner
查询的解析器,该解析器将使用DynamoDB数据源查询表格并返回结果。以下是一个示例的GraphQL模式定义和解析器实现的代码:
type Item {
id: ID!
name: String!
owner: String!
}
type Query {
getItemsByOwner(owner: String!): [Item]
}
const AWS = require('aws-sdk');
const dynamoDB = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event) => {
const owner = event.arguments.owner;
const params = {
TableName: 'your-dynamodb-table-name',
FilterExpression: 'owner = :owner',
ExpressionAttributeValues: {
':owner': owner
}
};
try {
const data = await dynamoDB.scan(params).promise();
return data.Items;
} catch (error) {
console.log(error);
throw new Error('Error retrieving items by owner');
}
};
请确保替换示例代码中的your-dynamodb-table-name
为你的DynamoDB表格名称。
完成上述步骤后,你可以使用AppSync API中的getItemsByOwner
查询来按所有者筛选数据。例如,使用GraphQL Playground或其他客户端工具发送以下查询:
query GetItemsByOwner {
getItemsByOwner(owner: "owner-id") {
id
name
owner
}
}
这将返回与所有者ID匹配的项目列表。