使用 appsync 解析器、aws dymaodb 的嵌套查询

Posted

技术标签:

【中文标题】使用 appsync 解析器、aws dymaodb 的嵌套查询【英文标题】:Nested query using appsync resolver, aws dymaodb 【发布时间】:2019-09-24 04:35:36 【问题描述】:

我需要根据第一个查询的结果在 dynamodb 上使用 aws appsync 解析器运行查询。 我有下面的用户表。 userTable

第一个查询:查找 userId=u1 且 type=user 的项目。 第二个查询:查找 userId="RefId 从第一个查询返回"且状态=完成的项目。

我需要在 appsync 解析器的一个查询中执行此操作。


#set( $expValues =  )
#set($expression="userId = :userId ")
$!expValues.put(":userId ",  "S" : $ctx.args.input.userId )


#if(! $util.isNullOrEmpty($ctx.args.input.type))
  #set($expression="$expression and begins_with(type)")
  $!expValues.put(":type",  "S" : $type)
#end


    "version" : "2018-05-29",
    "operation" : "Query",
    "index" : "mId_mType_index",
    "scanIndexForward" : false,
     "query" : 
        "expression":"$expression",

        #if( !$expValues.isEmpty() )
            "expressionValues" : $utils.toJson($expValues)
        #end
    ,
    #if( $ctx.args.limit )
        "limit": $ctx.args.limit
    #end
    #if( $ctx.args.nextToken )
        ,"nextToken": "$ctx.args.nextToken"
    #end


【问题讨论】:

【参考方案1】:

您可以使用 AWS AppSync 中的管道求解器来执行此操作。管道解析器可以有多个解析器函数,它们可以有自己的数据源。管道中的下一个函数可以使用前一个解析器的结果。

我需要在 appsync 解析器的一个查询中执行此操作。

我不知道你为什么(认为)你需要这个,但这是不可能的。

【讨论】:

以上是关于使用 appsync 解析器、aws dymaodb 的嵌套查询的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Aws AppSync 将 JWT 令牌(或任何其他变量)从父解析器传递给子解析器

AWS Appsync 批处理解析器

AWS appsync 查询解析器

AWS Appsync 一个 dynamodb 解析器中的多个 dynamodb 请求

用于 ElasticSearch 服务的简单 AWS AppSync 架构和解析器

在子解析器 AWS AppSync 中获取父对象