在 AWS 解析器映射模板中,是否有任何方法可以从对象中删除字段?
In AWS Resolver Mapping Template, is there any method for removing a field from an object?
我正在使用解析器映射模板在 AWS AppSync
中为我的 GraphQL
解析器编写代码。
我知道有一个 put
方法可用于将字段添加到输入对象或任何其他对象。像这样(例如):
$util.qr($name.put("firstName", "$ctx.args.input.firstName"))
但是现在我想从一个对象中删除一个字段,例如输入对象。
是否有任何类似于 put
方法但用于删除字段的方法。类似于:
$util.qr($ctx.args.input.remove("firstName"))
我是 AWS 和 DynamoDB
和 AppSync
的新手。(您可以认为我是一个绝对的初学者。)
使用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
是的,通常您可以对您在映射模板中创建的对象使用 $myObject.remove("myKey")
,但是,我要添加免责声明,这并不总是适用于 $ctx 中的对象,因为某些部分是不可变的. AppSync 捆绑了 utility methods that make dealing with objects in mapping templates easier (e.g. making copies of objects). This functionality is actually tied to that of Apache Velocity,因此您可以在这些文档中详细了解它的工作原理。
在 AppSync 中,查询或变更中的参数在请求映射模板中公开为 $context.args
。如果您传入了一个名为 input
的参数,您可以按如下方式删除它:
$util.quiet($context.args.remove("input"))
或其使用 quiet 的别名(与上述相同):
$util.qr($context.args.remove("input"))
这可以在请求和响应映射模板中使用。它还可以用于删除嵌套属性:
$util.qr($context.args.input.remove("nestedProp"))
我正在使用解析器映射模板在 AWS AppSync
中为我的 GraphQL
解析器编写代码。
我知道有一个 put
方法可用于将字段添加到输入对象或任何其他对象。像这样(例如):
$util.qr($name.put("firstName", "$ctx.args.input.firstName"))
但是现在我想从一个对象中删除一个字段,例如输入对象。
是否有任何类似于 put
方法但用于删除字段的方法。类似于:
$util.qr($ctx.args.input.remove("firstName"))
我是 AWS 和 DynamoDB
和 AppSync
的新手。(您可以认为我是一个绝对的初学者。)
使用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
是的,通常您可以对您在映射模板中创建的对象使用 $myObject.remove("myKey")
,但是,我要添加免责声明,这并不总是适用于 $ctx 中的对象,因为某些部分是不可变的. AppSync 捆绑了 utility methods that make dealing with objects in mapping templates easier (e.g. making copies of objects). This functionality is actually tied to that of Apache Velocity,因此您可以在这些文档中详细了解它的工作原理。
在 AppSync 中,查询或变更中的参数在请求映射模板中公开为 $context.args
。如果您传入了一个名为 input
的参数,您可以按如下方式删除它:
$util.quiet($context.args.remove("input"))
或其使用 quiet 的别名(与上述相同):
$util.qr($context.args.remove("input"))
这可以在请求和响应映射模板中使用。它还可以用于删除嵌套属性:
$util.qr($context.args.input.remove("nestedProp"))