Amazon web services 在AWS解析器映射模板中,是否有从对象中删除字段的方法?

Amazon web services 在AWS解析器映射模板中,是否有从对象中删除字段的方法?,amazon-web-services,aws-appsync,vtl,Amazon Web Services,Aws Appsync,Vtl,我正在用解析器映射模板为AWSAppSync中的GraphQL解析器编写代码 我知道有一种put方法可以用来向输入对象或任何其他对象添加字段。例如: 但是现在我想从一个对象中删除一个字段,例如,输入对象。 是否有类似于put方法的方法,但用于删除字段。比如: $util.qr($ctx.args.input.remove("firstName")) 我对AWS和 MadioDB 和 AppSyc 。(你可以认为我是一个绝对初学者) < P>使用 Furace并制作一个新的数组。< /P> #s

我正在用解析器映射模板为AWS
AppSync
中的
GraphQL
解析器编写代码

我知道有一种
put
方法可以用来向输入对象或任何其他对象添加字段。例如:

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

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

<>我对AWS和<代码> MadioDB 和<代码> AppSyc 。(你可以认为我是一个绝对初学者)

< P>使用<代码> Furace并制作一个新的数组。< /P>
#set($newInput={})

#foreach ($key in $ctx.args.input.keySet())
  #if($key!="firstName")
     $util.qr($newInput.put($key, $ctx.args.input.get($key)))
  #end
#end

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

在AppSync中,查询或变异中的参数在请求映射模板中显示为
$context.args
。如果已传入名为
input
的参数,则可以按如下方式删除该参数:

$util.quiet($context.args.remove(“input”))

或使用别名表示安静(同上):

$util.qr($context.args.remove(“input”))

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


$util.qr($context.args.input.remove(“nestedProp”))

所以实际上您没有删除它。将其他字段移动到新字段。就像我看到的例子。。。可能很好。因此,不是从
输入本身中真正删除该字段的方法吗?实用程序方法很方便,但VTL功能受到限制,因为宏被阻止。但这可能会改变(请…!):
#set($newInput={})

#foreach ($key in $ctx.args.input.keySet())
  #if($key!="firstName")
     $util.qr($newInput.put($key, $ctx.args.input.get($key)))
  #end
#end