我有Appsync API连接到Dynamo表。
Dynamo表具有数据:(“ id”是键,“ year”是排序键)
|--------------|-------------|-------------|-------------|-------------|
| id | year | name | class | subject |
|--------------|-------------|-------------|-------------|-------------|
| 001 | 2017 | Tom | E1 | Math |
|--------------|-------------|-------------|-------------|-------------|
| 002 | 2017 | Mary | E1 | Math |
|--------------|-------------|-------------|-------------|-------------|
| 003 | 2017 | Peter | E1 | Math |
|--------------|-------------|-------------|-------------|-------------|
模式
type Query {
listStudents(filter: TableStudentFilterInput, limit: Int, nextToken: String): StudentConnection
}
type StudentConnection {
items: [Student]
nextToken: String
}
input TableStudentFilterInput {
id: TableStringFilterInput
year: TableStringFilterInput
name: TableStringFilterInput
class: TableStringFilterInput
subject: TableStringFilterInput
}
type Student {
id: String!
year: String!
name: String
class: String
subject: String
}
查询:
query listStudentByYear {
listStudents (filter:{year:{eq:"2017"}}) {
items {
id
year
name
class
subject
}
}
}
问题:查询返回001和002,但不返回003。
当我尝试将“ id”从003更新为004时,查询将正确返回001、002、004。
这个奇怪的问题经常发生,有时,AppSync查询返回的结果不完整(缺少一些)。
任何建议都值得赞赏。
答案 0 :(得分:1)
从amplify-js
个问题中检出this个线程。
实质上,发生的是在之前应用限制。因此,如果限制为20,并且003
是条目号21,则它将不包括在过滤操作中。
一种解决方法是从AWS AppSync Console
所以改变这个:
#set( $ListRequest = {
"version": "2017-02-28",
"limit": $limit
})
对此:
#set( $ListRequest = {
"version": "2017-02-28",
} )
现在,这不是一个合适的解决方法,因为DynamoDB Scan仅返回1MB数据,这意味着该解决方案不适用于大型(实用)实现。