Basi c Запрос и сортировка по дате в DynamoDB - PullRequest
0 голосов
/ 02 августа 2020

У меня есть приложение, которое хранит сообщения чата на 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
        },
    }

Но сообщения приходят не по порядку ... Как можно сделать тот же запрос и отсортировать данные?

...