如何为DynamoDB创建满足指定筛选条件的GraphQL查询
实现方案
1. AppSync Schema 定义
type EventChat { eventId: ID! createdOn: AWSDateTime! # 若存储的是Unix时间戳可改为AWSTimestamp userId: ID! content: String! # 可按需补充其他业务字段 } type Query { getEventChatsByDateRange( eventId: ID! startDate: AWSDateTime! # 和createdOn类型保持一致,时间戳就改AWSTimestamp endDate: AWSDateTime! ): [EventChat!]! }
2. 前端Apollo Client查询语句
query GetEventChatsByDateRange($eventId: ID!, $startDate: AWSDateTime!, $endDate: AWSDateTime!) { getEventChatsByDateRange(eventId: $eventId, startDate: $startDate, endDate: $endDate) { eventId createdOn userId content # 按需取返回字段 } }
3. AppSync DynamoDB 请求映射模板(VTL)
{ "version": "2018-05-29", "operation": "Query", "query": { "expression": "eventId = :eventId AND createdOn BETWEEN :startDate AND :endDate", "expressionValues": { ":eventId": $util.dynamodb.toDynamoDBJson($ctx.args.eventId), ":startDate": $util.dynamodb.toDynamoDBJson($ctx.args.startDate), ":endDate": $util.dynamodb.toDynamoDBJson($ctx.args.endDate) } }, "scanIndexForward": true # 按createdOn升序返回,要降序改为false即可 }
4. 响应映射模板(默认即可)
$util.toJson($ctx.result.items)
内容的提问来源于stack exchange,提问作者user2111865
相关产品推荐
相关产品推荐

