代码之家  ›  专栏  ›  技术社区  ›  CraigH

如何在AWS AppSync中查询被跟踪用户的所有文章

  •  0
  • CraigH  · 技术社区  · 6 年前

    我有一个使用dynamodb作为后端的AWS AppSync应用程序。我有一个日志表,每个日志都有一个原始作者的用户名字段。在这种情况下,我希望查询查看他们所关注的作者的所有文章。

    每个用户可以有多个帖子,每个用户可以跟踪多个用户。

    type Post {
        id: ID!
        username: String
        title: String
        content: String
    }
    
    type User{
         username: String
         following: [String]
    }
    

    我应该如何构造dynamodb中的表和appsync中的appsync解析器/模式来实现这一点。

    1 回复  |  直到 6 年前
        1
  •  1
  •   KoingDev    6 年前
    类型用户{
    用户名:字符串!γ主键
    帖子:[帖子]
    以下:【以下】
    }
    键入以下内容{
    追随者:绳子!γ主键
    用户名:字符串!β排序关键字
    帖子:[帖子]
    }
    类型POST {
    用户名:字符串!γ主键
    波斯蒂德:身份证!
    标题:字符串
    内容:字符串
    }
    类型查询{
    getpostbyusername(用户名:string!)用户
    }
    模式{
    查询:查询
    }
    < /代码> 
    
    

    user.postsresolver:。

    < PRE> >代码> “版本”:“2017-02-28”, “operation”:“查询”, “查询”:{ “expression”:“用户名=:用户名”, “表达式值”:。{ “:username”:$util.dynamodb.todynamodbjson($context.source.username) } } } $util.tojson($ctx.result.items) < /代码>

    user.followingresolver

    < PRE> >代码> “版本”:“2017-02-28”, “operation”:“查询”, “查询”:{ “expression”:“follower=:follower”, “表达式值”:。{ “:follower”:$util.dynamodb.todynamodbjson($context.source.username) } } } $util.tojson($ctx.result.items) < /代码>

    跟踪。postsresolver

    < PRE> >代码> “版本”:“2017-02-28”, “operation”:“查询”, “查询”:{ “expression”:“用户名=:用户名”, “表达式值”:。{ “:username”:$util.dynamodb.todynamodbjson($context.source.username) } } } $util.tojson($ctx.result.items) < /代码>

    query.getpostbyusernameresolver

    < PRE> >代码> “版本”:“2017-02-28”, “operation”:“getitem”, “密钥”:{ “username”:$util.dynamodb.todynamodbjson($ctx.args.username),, } } $util.tojson($ctx.result) < /代码>

    测试

    用户表

    可发布

    跟踪表

    现在我们可以按用户名查询所有帖子,也可以查询所有朋友的帖子。
    希望它有帮助:)

    用户名 旋转变压器:

    {
        "version": "2017-02-28",
        "operation": "Query",
        "query": {
            "expression": "username = :username",
            "expressionValues": {
                ":username": $util.dynamodb.toDynamoDBJson($context.source.username)
            }
        }
    }
    
    $util.toJson($ctx.result.items)
    

    用户跟随 旋转变压器

    {
        "version": "2017-02-28",
        "operation": "Query",
        "query": {
            "expression": "follower = :follower",
            "expressionValues": {
                ":follower": $util.dynamodb.toDynamoDBJson($context.source.username)
            }
        }
    }
    
    $util.toJson($ctx.result.items)
    

    跟踪帖子 旋转变压器

    {
    “版本”:“2017-02-28”,
    “operation”:“查询”,
    “查询”:{
    “expression”:“用户名=:用户名”,
    “表达式值”:。{
    “:username”:$util.dynamodb.todynamodbjson($context.source.username)
    }
    }
    }
    
    $util.tojson($ctx.result.items)
    

    query.getpostby用户名 旋转变压器

    {
        "version": "2017-02-28",
        "operation": "GetItem",
        "key": {
            "username": $util.dynamodb.toDynamoDBJson($ctx.args.username),
        }
    }
    
    $util.toJson($ctx.result)
    

    测试

    enter image description here

    用户表

    enter image description here

    后置表

    enter image description here

    下表

    enter image description here

    现在我们可以按用户名查询所有帖子,也可以查询所有朋友的帖子。
    希望有帮助:)

    推荐文章