В AWS Resolver Mapping Template есть какой-нибудь метод удаления поля из объекта? - PullRequest
2 голосов
/ 08 октября 2019

Я пишу код для моих GraphQL распознавателей в AWS AppSync с шаблоном сопоставления распознавателей.

Я знаю, что есть метод put, который я могу использовать для добавления поля к объекту ввода или любому другому объекту. Вот так (например):

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

Но теперь я хочу удалить поле из объекта, например, входного объекта. Есть ли метод, похожий на метод put, но для удаления поля. что-то вроде:

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

Я новичок в AWS и DynamoDB и AppSync. (вы можете считать меня абсолютным новичком.)

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Используйте 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
0 голосов
/ 16 октября 2019

Да, обычно вы можете использовать $myObject.remove("myKey") для объектов, которые вы создаете в шаблоне отображения, однако я добавлю заявление об отказе от ответственности, что это не всегда будет работать с объектами в $ ctx, так как некоторые части являются неизменяемыми. AppSync связывает служебные методы , которые упрощают работу с объектами в шаблонах сопоставления (например, создание копий объектов). Эта функциональность фактически связана с Apache Velocity , поэтому вы можете прочитать больше о том, как она работает в этих документах.

...