amazon-dynamodb - 无法解析 JSON 文档 : Unrecognized token '$util' : was expecting ('true' , 'false' 或 'null' )

标签 amazon-dynamodb graphql aws-appsync

我正在尝试使用带有过滤器的查询:

query queryPitchesByApprovedIndex($approved: Boolean = true) {
  queryPitchesByApprovedIndex(approved: $approved) {
    items {
      id
    }
  }
}

由 AppSync 制作的映射模板如下所示:

{
  "version": "2017-02-28",
  "operation": "Query",
  "query": {
    "expression": "#approved = :approved",
    "expressionNames": {
      "#approved": "approved",
    },
    "expressionValues": {
      ":approved": {"B": $util.dynamodb.toBinary($ctx.args.approved)},
    },
  },
  "index": "approved-index",
  "limit": $util.defaultIfNull($ctx.args.first, 20),
  "nextToken": $util.toJson($util.defaultIfNullOrEmpty($ctx.args.after, null)),
  "scanIndexForward": true,
  "select": "ALL_ATTRIBUTES",
}

我得到的错误是:

Unable to parse the JSON document: 'Unrecognized token '$util': was expecting ('true', 'false' or 'null')\n at [Source: (String)\"{\n \"version\": \"2017-02-28\",\n \"operation\": \"Query\",\n \"query\": {\n \"expression\": \"#approved = :approved\",\n \"expressionNames\": {\n \"#approved\": \"approved\",\n },\n \"expressionValues\": {\n \":approved\": {\"B\": $util.dynamodb.toBinary($ctx.args.approved)},\n },\n },\n \"index\": \"approved-index\",\n \"limit\": 20,\n \"nextToken\": null,\n \"scanIndexForward\": true,\n \"select\": \"ALL_ATTRIBUTES\",\n}\"; line: 10, column: 31]'

知道如何解决这个问题吗?

最佳答案

$util.dynamodb.toBinary(String data) 采用 String 作为输入,但您传递的是 Boolean,这就是为什么评估失败。

这是很好的反馈,我将与团队核实是否可以使实用程序更加宽松并采用 bool 值$util.dynamodb.toBinary(Boolean data)

同时,这里有一个可能的解决方法:

#if($ctx.args.approved) 
 #set($approved = $util.dynamodb.toBinaryJson("true"))
#else
 #set($approved = $util.dynamodb.toBinaryJson("false"))
#end

{
  "version": "2017-02-28",
  "operation": "Query",
  "query": {
    "expression": "#approved = :approved",
    "expressionNames": {
      "#approved": "approved",
    },
    "expressionValues": {
      ":approved":  $approved
    },
  },
  "index": "approved-index",
  "limit": $util.defaultIfNull($ctx.args.first, 20),
  "nextToken": $util.toJson($util.defaultIfNullOrEmpty($ctx.args.after, null)),
  "scanIndexForward": true,
  "select": "ALL_ATTRIBUTES",
}

关于amazon-dynamodb - 无法解析 JSON 文档 : Unrecognized token '$util' : was expecting ('true' , 'false' 或 'null' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56065652/

相关文章:

javascript - 如何使用 DynamoDB 使用 "contains"进行搜索

python - 使用 .contains() 从 DynamoDB 检索值

java - 将 HTML 模板存储在 NoSQL DB 中

typescript - 在 NestJS + GraphQL 中实现 'Namespace-Typed' 解析器

ruby-on-rails - Rails/GraphQL/设计 : Any good alternative to Devise for applications running GraphQL?

aws-amplify - 如何删除和重新创建由模拟 api 创建的本地 dynamodb/appsync/amplify 数据库?

amazon-web-services - 发布 AWS Amplify GraphQL 突变时如何避免在数组中创建重复项

amazon-dynamodb - 发电机 : High SuccessfulRequestLatency

express - 无法读取未定义的属性 'context' - GraphQL

websocket - 使用Postman测试Appsync订阅