在AppSync中,可以使用AWS AppSync GraphQL API的查询和过滤功能来基于数组字段中的条目进行过滤。以下是一个示例解决方法:
假设有一个名为"Book"的类型,其中包含一个名为"authors"的数组字段,用于存储书籍的作者信息。我们将使用AppSync的查询和过滤功能来基于"authors"字段中的条目进行过滤。
首先,在AppSync的GraphQL模式定义中,定义"Book"类型和相关查询:
type Book {
id: ID!
title: String!
authors: [String!]!
}
type Query {
getBooksByAuthor(author: String!): [Book!]!
}
然后,在AppSync的数据源中实现相应的数据查询逻辑。以下是一个使用DynamoDB作为数据源的示例:
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event) => {
const author = event.arguments.author;
const params = {
TableName: 'BooksTable',
FilterExpression: 'contains(authors, :author)',
ExpressionAttributeValues: { ':author': author }
};
const result = await dynamodb.scan(params).promise();
return result.Items;
};
最后,在AppSync的解析器配置中,将"getBooksByAuthor"查询字段与上述Lambda函数进行关联:
{
"version": "2018-05-29",
"resolvers": {
"Query.getBooksByAuthor": {
"type": "AWS_LAMBDA",
"fieldName": "getBooksByAuthor",
"dataSourceName": "MyLambdaDataSource",
"requestMappingTemplate": "..."
"responseMappingTemplate": "..."
}
}
}
这样,当执行以下查询时,将基于"authors"字段中的条目进行过滤,并返回匹配的书籍列表:
query GetBooksByAuthor {
getBooksByAuthor(author: "John Doe") {
id
title
authors
}
}
请根据您的具体应用和数据源进行适当的调整和修改。