Mein DynamoDB Schema ist:Paginierung in DynamoDB mit Global Sekundärindizes
TableName = 'Cities'
PrimaryIndex = '_id'
SecondaryIndex = 'areaId-timestamp-index'
- areaId is primary key
- timestamp is sort key
Die Datenstruktur in DynamoDB sieht wie folgt aus:
{ _id: '....', name: 'New York', areaId: 22, timestamp: 1478882557071 },
{ _id: '....', name: 'Washington', areaId: 22, timestamp: 1478882557071 },
{ _id: '....', name: 'Copenhagen', areaId: 18, timestamp: 1478882557071 },
{ _id: '....', name: 'Berlin', areaId: 12, timestamp: 1478882557071 },
Ich möchte durch die Städte unter die Paginieren können, folgende Bedingungen:
- Nur Städte aus, fx, Bereich mit id 22
- Muss, um nach Zeitstempel paginierte werden
Meine Frage wie folgt aussieht:
const areaId = 22
const params = {
TableName: 'Cities',
Limit: 10,
IndexName: 'areaId-timestamp-index',
KeyConditionExpression: 'areaId = :x',
ExpressionAttributeValues: {
':x': areaId
}
}
dynamo.query(params)
Als ich das laufen bekomme ich die erwartete Antwort mit einem lastEvaluatedKey
LastEvaluatedKey = {
areaId: 22,
_id: '8c43-d917-f9ec', // ID of last item in batch
timestamp: 1478882561962 // Timestamp of last item in batch
}
Als ich Führen Sie dann die nächste nachfolgende Abfrage aus (um mehr Ergebnisse zu erhalten), füge ich die ExclusiveStartKey
-Eigenschaft mit den exakt gleichen Werten hinzu, die in LastEvaluatedKey
zurückgegeben werden.
Allerdings, wenn ich die Abfrage ausführen, die ich erhalten:
The provided key element does not match the schema