#graphql #amazon-dynamodb #aws-appsync
Вопрос:
Могу я узнать, пожалуйста, в чем причина, по которой элементы в DynamoDB не извлекаются GraphQL?
При поиске через интерфейс консоли DynamoDB я мог легко увидеть и запросить элемент там, но после использования в GraphQL некоторые элементы не отображаются. Имейте в виду, что это не проблема с подключением, потому что я мог бы запросить элементы, просто есть определенный элемент, который не возвращается.
Например, если я запрошу все записи, он вернет все записи в массиве, но элемент там не отображается. Однако, когда я пытаюсь запросить сообщение, просто указав его по идентификатору, оно работает хорошо.
Пример кода, который не работает:
listPosts(filter: {groupID: {eq: "25"}}) {
items {
id
content
}
}
но когда я это делаю, это хорошо работает:
getPost(id: "c59ce7e9") {
id
content
}
Комментарии:
1. Если он предоставляет другие данные, кроме одного пертикулярного элемента. Тогда это проблема со стороны бд динамо. Возможно, вы можете дважды проверить идентификатор группы, хранящийся в базе данных для этого элемента. Может быть, какая-то проблема.
Ответ №1:
У меня была та же проблема, и я могу поделиться тем, что я нашел и работал на меня.
Распознаватель по умолчанию для операции со списком имеет ограничение:20 встроенных.
{
"version": "2017-02-28",
"operation": "Scan",
"filter": #if($context.args.filter) $util.transform.toDynamoDBFilterExpression($ctx.args.filter) #else null #end,
"limit": $util.defaultIfNull($ctx.args.limit, 20),
"nextToken": $util.toJson($util.defaultIfNullOrEmpty($ctx.args.nextToken, null)),
}
Я полагаю, вы могли бы изменить это или добавить фильтр ограничений в свой запрос, как это:
listPosts(filter: {groupID: {eq: "25"}}, limit:100) {
items {
id
content
}
}
Ограничение должно быть больше, чем количество записей.
Вы можете видеть, что это может быть проблемой, потому что он использует операцию сканирования, то есть проверяет каждую запись на соответствие. это повредило бы производительности. вы можете добавить нумерацию страниц или создать запрос для этого. вам нужно будет изучить нумерацию страниц, связи и связи.