AWS AppSync добавляет несколько дочерних элементов в один родительский атрибут с распознавателем проверки существования - PullRequest
0 голосов
/ 02 июля 2018

У меня вопрос об AWS AppSync. Интересно, есть ли способ проверить существование при добавлении нескольких значений в один атрибут родителя.

Итак, вот мой пример:

Это тип пользователя: Тип пользователя

Вот как выглядит динамод: предмет Dynamodb

И вот что я хочу сделать: добавить три программы в запись пользователя под атрибутом Programs. мутация addProgramToUser

А вот мой текущий резольвер: распознаватель addProgramToUser

Таким образом, моя логика заключается в том, чтобы сначала извлечь существующие программы из DynamodB, а затем проверить, присутствуют ли там идентификаторы программ «Для добавления». Если есть, остановите обновление или пропустите этот идентификатор программы. Если нет, продолжите обновление. Поэтому вопрос в том, как извлечь текущие данные с использованием VTL и как сравнить существующие и те, которые я хочу добавить.

Или, если у кого-то есть другие идеи о том, как я могу выполнить эту задачу, помогите. Спасибо. Я не могу вставлять картинки, так как я новичок в stackoverflow. Приносим извинения за неудобства. Хорошего дня.

1 Ответ

0 голосов
/ 03 июля 2018

Кажется, что вы можете использовать условие для шаблона сопоставления запросов вашего резольвера. Выражение условия позволяет сообщать AWS AppSync и DynamoDB, должен ли запрос быть успешным или нет, основываясь на состоянии объекта, уже находящегося в DynamoDB, до выполнения операции. Например, в вашем случае вы хотите, чтобы запрос UpdateItem выполнялся только в том случае, если в «Динамо» уже нет идентификатора программы.

{
   "version" : "2017-02-28",
   "operation" : "PutItem",
   "key" : {
      "id" : { "S" : "1" }
   },
   "condition" : {
      "expression" : "attribute_not_exists(programId)"
   }
}
...