2

我正在使用解析器映射模板为GraphQLAWS中的解析器编写代码。AppSync

我知道有一种put方法可用于将字段添加到输入对象或任何其他对象。像这样(例如):

$util.qr($name.put("firstName", "$ctx.args.input.firstName"))

但是现在我想从对象中删除一个字段,例如输入对象。是否有任何类似于该put方法但用于删除字段的方法。就像是:

$util.qr($ctx.args.input.remove("firstName"))

我是 AWS 的新手,DynamoDB而且AppSync.(您可以将我视为绝对的初学者。)

4

3 回答 3

1

使用foreach并制作一个新数组。

#set($newInput={})

#foreach ($key in $ctx.args.input.keySet())
  #if($key!="firstName")
     $util.qr($newInput.put($key, $ctx.args.input.get($key)))
  #end
#end
于 2019-10-09T21:27:37.997 回答
1

是的,通常您可以$myObject.remove("myKey")在映射模板中创建的对象上使用,但是,我将添加免责声明,这并不总是适用于 $ctx 中的对象,因为某些部分是不可变的。AppSync 捆绑了实用方法,使处理映射模板中的对象更容易(例如,制作对象的副本)。此功能实际上与Apache Velocity的功能相关联,因此您可以在这些文档中阅读有关它如何工作的更多信息。

于 2019-10-16T19:52:22.650 回答
0

在 AppSync 中,查询或突变中的参数在请求映射模板中公开为$context.args. 如果您传入了一个名为的参数input,则可以按如下方式将其删除:

$util.quiet($context.args.remove("input"))

或者它使用安静的别名(与上述相同):

$util.qr($context.args.remove("input"))

这可以在请求和响应映射模板中使用。它还可以用于删除嵌套属性:

$util.qr($context.args.input.remove("nestedProp"))

于 2020-05-18T19:49:04.497 回答