小编Ben*_*ten的帖子

在 AWS AppSync 查询中返回嵌套的 JSON

一般来说,我对 AppSync(和 GraphQL)很陌生,但是在将解析器连接到我们的 DynamoDB 表时遇到了一个奇怪的问题。具体来说,我们有一个嵌套 Map 结构用于我们任意构造的项目属性之一(其复杂性和形式取决于父项目的类型)——有点像这样:

"item" : {
    "name": "something",
    "country": "somewhere",
    "data" : {
        "nest-level-1a": {
            "attr1a" : "foo",
            "attr1b" : "bar",
            "nest-level-2" : {
                "attr2a": "something else",
                "attr2b": [
                    "some list element",
                    "and another, for good measure"
                ]
            }
        }
    },
    "cardType": "someType"
}
Run Code Online (Sandbox Code Playgroud)

我们随附的 GraphQL 类型如下:

type Item {
    name: String!
    country: String!
    cardType: String!
    data: AWSJSON!  ## note: it was originally String!
}
Run Code Online (Sandbox Code Playgroud)

当我们查询项目时,我们得到以下响应:

{
    "data": {
        "genericItemQuery": {
            "name": "info/en/usa/bra/visa",
            "country": "USA:BRA",
            "cardType": …
Run Code Online (Sandbox Code Playgroud)

json vtl graphql aws-appsync

5
推荐指数
1
解决办法
4298
查看次数

如何按查询过滤 AWS AppSync 中的嵌套字段

问题和预期结果

我正在使用概念证明模式和 DynamoDB 表设置来过滤嵌套字段值。我在这里非常普遍地遵循了这些想法以及$utils.transform.toDynamoDBFilterExpression(这里)的文档。

基本思想是这样的:使用相同的原则,我想通过任何任意深度的嵌套字段(低于 DynamoDB 中的 32 个文档路径长度限制)进行过滤。相关设置如下所示:

AppSync 架构(对命名约定表示歉意;应该是一个快速而肮脏的 PoC):

query {
    listActiveListingsBySubAndFilter(
        filter: TableTestMasterDataTable_ImportV1FilterInput!,
        limit: Int,
        nextToken: String
    ): TestMasterDataTable_ImportV1Connection
}

input TableBooleanFilterInput {
    ne: Boolean
    eq: Boolean
}

input TableDataObjectFilterInput {
    beds: TableFloatFilterInput
    baths: TableFloatFilterInput
}

input TableFloatFilterInput {
    ne: Float
    eq: Float
    le: Float
    lt: Float
    ge: Float
    gt: Float
    contains: Float
    notContains: Float
    between: [Float]
}

input TableIDFilterInput {
    ne: ID
    eq: ID
    le: ID
    lt: ID
    ge: …
Run Code Online (Sandbox Code Playgroud)

nested filter amazon-dynamodb graphql aws-appsync

3
推荐指数
1
解决办法
1967
查看次数

标签 统计

aws-appsync ×2

graphql ×2

amazon-dynamodb ×1

filter ×1

json ×1

nested ×1

vtl ×1