Appsync: подписаться на элемент в массиве
Что касается AWS AppSync. Есть ли способ подписки на элемент массива, например:
onSendMessage(recipientIds:[myID,otherPotentiallyRandomAndUnknownIds]) {
}
Я попытался просто добавить искомый элемент, однако он не вызывает подписку, если мне не хватает других элементов (и по порядку)
1 ответ
К сожалению, это нельзя сделать тривиально. Также, как вы заметили, порядок имеет значение, потому что в GraphQL он должен рассматриваться как список (который упорядочен). Таким образом, подписка срабатывает в ожидании того порядка, который вы указали в схеме. Он также ожидает точные аргументы, которые вы предоставляете в списке, потому что схема GraphQL по сути рассматривается клиентами как контракт, поэтому, если в контракте указывается, что подписка находится в списке List с этими элементами в этом порядке, то он инициирует подписку на основе это.
Теперь, что вы могли бы сделать, это настроить динамо-поток (предполагая DynamoDB в качестве источника данных), который подает любые изменения в таблице в лямбду, откуда вы можете сделать мутацию в AppSync (в зависимости от того, было ли внесено изменение в элемент в массиве) для запуска подписки (настройте простую мутацию / подписки только для этого варианта использования). Это своего рода обходной путь, и могут быть другие новые решения, которые вы можете изучить.