У меня есть приложение, которое хранит сообщения чата на DynamoDB. Сохраненное сообщение выглядит примерно так:
messageID | channelID | date | isSeen | userID | message | messageType | url
-------------------------------------------------------------------------------------------------------
123444 | 12121212 | 2020-07-24T14:16:08 | false | 44444 | Hello | N | /user/hello
Структура таблицы создается на бессерверном сервере:
ChannelMessagesTable:
Type: "AWS::DynamoDB::Table"
Properties:
AttributeDefinitions:
- AttributeName: "messageID"
AttributeType: "S"
- AttributeName: "channelID"
AttributeType: "S"
KeySchema:
- AttributeName: "messageID"
KeyType: "HASH"
BillingMode: PROVISIONED
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: websocket-channel-messages-${self:provider.stage}
GlobalSecondaryIndexes:
- IndexName: websocket-channel-messages-channelID-GSI
KeySchema:
- AttributeName: channelID
KeyType: HASH
Projection:
ProjectionType: ALL
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
Я получаю сообщения, передающие атрибут channelId, например:
{
TableName: CHANNEL_MESSAGES_TABLE_NAME,
IndexName: 'websocket-channel-messages-channelID-GSI',
KeyConditionExpression: "#channelID = :channelID",
ExpressionAttributeNames:{
"#channelID": "channelID"
},
ExpressionAttributeValues: {
":channelID": providedChannelID
},
}
Но сообщения приходят не по порядку ... Как можно сделать тот же запрос и отсортировать данные?