$util.transform.toDynamoDBFilterExpression

$util.transform.toDynamoDBFilterExpression

如何使用它?

从这里开始: https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html

我基本上是这样做的:

{
    "version": "2017-02-28",
    "operation": "Scan",
    "filter" : {
      $util.transform.toDynamoDBFilterExpression({
        PartitionKey:{
            begins_with:"Model"
        }
      }),
    }
}

那是行不通的。您如何将此命令准确地放入解析器中?

TLDR:如果你有类型

type Post { id: ID! title String! }

然后 util.transform.toDynamoDBFilterExpression 希望您提供的值如下所示:

{
    "version": "2017-02-28",
    "operation": "Scan",
    "filter" : $util.transform.toDynamoDBFilterExpression(
      {
        id: {
          beginsWith:"Model"
        }
      }
   )
}

$util.transform 实用函数旨在与一个名为 GraphQL Transform 的新项目一起使用,该项目刚刚作为 AWS Amplify 的一部分发布。要点是一组客户端工具采用一个简化的输入模式,用 GraphQL 指令注释,并通过一系列 "transformers" "transform" 将其传递到一个完全描述性的 CloudFormation 文档(以及其他输出格式中未来)。该 CF 文档完全实现了由模式和转换器集定义的应用程序(您可以为自定义工作流编写自己)。

您可以在此处阅读有关该项目的更多信息 (https://github.com/aws-amplify/amplify-cli/blob/master/graphql-transform-tutorial.md)。

以及如何在此处编写自己的转换器 (https://github.com/aws-amplify/amplify-cli/blob/master/how-to-write-a-transformer.md)

您不需要额外的括号。正确的语法是 "beginsWith"。 所以你的例子应该是这样的:

{
    "version": "2017-02-28",
    "operation": "Scan",
    "filter" : $util.transform.toDynamoDBFilterExpression({
        PartitionKey:{
            beginsWith:"Model"
        }
      })
}

对于其他比较,请使用:

ne:不等于 eq:等于 le:小于或等于 lt:低于 ge:大于或等于 gt:大于 包含:包含(对于数组或字符串) notContains:不包含(相同,数组或字符串) between: Between (需要两个参数) beginsWith: 开始于