Использование: AppSync, DynamoDB и Lambda
Так что я немного застрял в том, как интегрировать AppSync в Amplify в React Native.У меня есть существующий API в AWS AppSync, который я создал на консоли.Этот API имеет несколько различных моделей, таких как: Пользователи, Видео, Видеокомментарии и т. Д. Некоторые объекты в этих моделях имеют настраиваемые шаблоны сопоставления и преобразователи, которые действительно важны для приложения.
Например, это быстрыйпосмотрим, какая у нас схема.
тип Пользователь {
userId: Id!
name: String
uploadedVideos (ограничение: Int, nextToken:Строка): VideoConnection
и т. Д.
}
тип Video {
videoID: Id!
объект: S3Object
userId: Id!
uploadedBy: Пользователь
}
У нас есть распознаватель, который запускается с простым запросом getVideo, который будет извлекать атрибут uploadedBy с помощью userIdи получает всю необходимую информацию об этом пользователе.
Кроме того, источники данных (таблицы DynamoDb), которые мы создали для моделей, имеют первичные ключи, а некоторые имеют ключи сортировки.Как и таблица VideoLikes, отслеживает, кому понравилось видео, и чтобы избежать дублирования, первичный ключ - это VideoID, а ключ сортировки - UserID.Это лишь небольшой пример, у нас есть другие места, где мы делаем это, чтобы также иметь доступ к БИС.
Когда я начал использовать Amplify, я попытался воссоздать API-интерфейс AppSync, потому что мне понравилось, насколько мощными были возможности CloudFormation сразличные постановочные среды.Тем не менее, я заметил, что DynamoDB для моделей были автоматически определены и им был автоматически установлен идентификатор в качестве первичного ключа.Мы используем БИС для сортировки по определенным значениям, например, для видео, если мы хотим отсортировать по количеству лайков или комментариев, поэтому, к сожалению, это не сработает для нас.Поэтому, когда я заметил это, я использовал команду «Codegen» из моего исходного API-интерфейса AppSync и столкнулся с проблемой, когда мои преобразователи и шаблоны сопоставления не были скопированы со схемой, запросами, мутациями и подписками, что приводило к сбоям большинства запросов, посколькуэти источники данных отсутствовали.
Итак, мой вопрос:
Есть ли способ интегрировать / использовать ВСЕ из моего существующего API AppSync в моем приложении React Native?Это включает в себя пользовательские распознаватели и шаблоны сопоставления.ЕСЛИ НЕ
Есть ли способ установить первичный ключ и ключ сортировки для DynamoDB Моделей при создании API непосредственно в CLI Amplify?ЕСЛИ НЕ
Есть ли другой способ эффективной сортировки данных в DynamoDB без использования LSI и GSI?Если модели автоматически генерируют таблицы с GSI, это может быть проблематично, потому что я знаю, что GSI немного дороже, поэтому я бы хотел как можно больше избегать их.Есть ли другой сервис, который будет сортировать данные, которые могут быть использованы в AppSync из DynamoDB?Любая помощь будет оценена, спасибо.