如何在 AWS AppSync 中查询关注用户的所有帖子
Posted
技术标签:
【中文标题】如何在 AWS AppSync 中查询关注用户的所有帖子【英文标题】:How to query for all posts by followed users in AWS AppSync 【发布时间】:2019-03-08 03:51:20 【问题描述】:我有一个使用 DynamoDB 作为后端的 AWS Appsync 应用程序。我有一个帖子表,每个帖子都有一个原始作者的用户名字段。我处于一种情况,我想查询以查看他们关注的作者的所有帖子。
每个用户可以有多个帖子,每个用户可以关注多个用户。
type Post
id: ID!
username: String
title: String
content: String
type User
username: String
following: [String]
我应该如何构建 DynamoDB 中的表以及 AppSync 中的 AppSync 解析器/架构来完成此任务。
【问题讨论】:
【参考方案1】:type User
username: String! ## Primary key
posts: [Post]
following: [Following]
type Following
follower: String! ## Primary key
username: String! ## Sort key
posts: [Post]
type Post
username: String! ## Primary key
postID: ID!
title: String
content: String
type Query
getPostsByUsername(username: String!): User
schema
query: Query
User.posts 解析器:
"version": "2017-02-28",
"operation": "Query",
"query":
"expression": "username = :username",
"expressionValues":
":username": $util.dynamodb.toDynamoDBJson($context.source.username)
$util.toJson($ctx.result.items)
User.following解析器
"version": "2017-02-28",
"operation": "Query",
"query":
"expression": "follower = :follower",
"expressionValues":
":follower": $util.dynamodb.toDynamoDBJson($context.source.username)
$util.toJson($ctx.result.items)
Following.posts解析器
"version": "2017-02-28",
"operation": "Query",
"query":
"expression": "username = :username",
"expressionValues":
":username": $util.dynamodb.toDynamoDBJson($context.source.username)
$util.toJson($ctx.result.items)
Query.getPostsByUsername解析器
"version": "2017-02-28",
"operation": "GetItem",
"key":
"username": $util.dynamodb.toDynamoDBJson($ctx.args.username),
$util.toJson($ctx.result)
测试
用户表
PostTable
下表
现在我们可以通过用户名查询所有帖子以及所有朋友的帖子。希望对您有所帮助:)
【讨论】:
谢谢,但是我怎么才能得到我所有朋友的所有帖子呢?不只是一个用户 你想得到你所有朋友的帖子吗?如果我错了,请纠正我。 1个用户可以有很多帖子和很多关注者? @KoingDev 如何将分页添加到getPostsByUsername(username: String!): User
?
在哪里创建这些解析器,因为如果我创建 user.following.vtl 解析器,它将不会被读取。
谢谢。我找到了。它在这里提到。 docs.aws.amazon.com/appsync/latest/devguide/…以上是关于如何在 AWS AppSync 中查询关注用户的所有帖子的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AWS appsync (GraphQL) 禁用自省查询?
AWS Appsync Javascript 查询示例和输入语法
AWS AppSync Lambda 解析器获取查询返回类型
使用 appsync 解析器、aws dymaodb 的嵌套查询