首页 > 解决方案 > “queryAll”查询类型中的 nextToken

问题描述

我的 AWS AppSync 中有一个非常简单的架构结构,使用 DynamoDB 作为后端。

    type Demo {
        id: ID!
        name: String!
        date: String!
    }

    type DemoConnection {
        items: [Demo]
        nextToken: String
    }
input ListFilter {
    limit: Int
    nextToken: String
}

我有这个查询来列出所有演示

listAllDemo(input: ListFilter): DemoConnection

解析器看起来像 -

{
    "version" : "2017-02-28",
    "operation" : "Scan",
    "limit": #if($context.arguments.limit) $context.arguments.limit #else 10 #end,
    "nextToken": #if($context.arguments.input.nextToken) "$context.arguments.input.nextToken" #else null #end
}

和响应映射模板为

{
    "items": $util.toJson($context.result.items),
    "nextToken": $util.toJson($context.result.nextToken)
}

我创建了大约 13 条记录来测试“nextToken”。它返回了一个令牌以及 10 个结果,我用它来获取其他结果。还有一些其他 API 可以从数据库中删除这些记录。发生的情况是,即使我现在在 DB 中有 7 条记录,“ listAll”也会返回 nextToken ,它不应该这样做,尽管使用这个 nextToken 下一个结果集是空白的。

即使没有记录,我也无法理解为什么我会得到这个 nextToken。

标签: graphqlaws-appsync

解决方案


推荐阅读