如何在 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 中查询关注用户的所有帖子的主要内容,如果未能解决你的问题,请参考以下文章