DynamoDB отсортировал вложенный массив сообщений чата - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть требование для создания чата с использованием только стека AWS и, желательно, с управляемой базой данных noSQL, такой как DynamoDB.

Я использую библиотеку Dynamoose.

let userSchema = new Schema({
    id: {
        type: String,
        hashKey: true
    },
    conversations: {
        type: [String]
    }
},{timestamps: true});

let conversaionSchema = new Schema({
    id: {
        type: String,
        hashKey: true
    },
    participants: {
        type: [String],
        default: []
    },
    messages: [String]
}, {
    timestamps: true
});

Это моя схема. Прямо сейчас массив сообщений сортируется по какой-то причине и отображает сообщения в неправильном порядке, я хочу, чтобы он сортировался по отметке времени.

Пример объекта диалога:

{
  "createdAt": 1544398988371,
  "messages": {
    "wrapperName": "Set",
    "values": [
      "{\"body\":\"AS\",\"author\":\"1232131321\",\"createdAt\":1544422180305}",
      "{\"body\":\"ASD\",\"author\":\"1232131321\",\"createdAt\":1544422180170}",
      "{\"body\":\"D\",\"author\":\"1232131321\",\"createdAt\":1544422180597}",
      "{\"body\":\"DAS\",\"author\":\"1232131321\",\"createdAt\":1544422180469}",
      "{\"body\":\"aa\",\"author\":\"1232131321\",\"createdAt\":1544422179794}",
      "{\"body\":\"ad\",\"author\":\"1232131321\",\"createdAt\":1544422173947}",
      "{\"body\":\"ad\",\"author\":\"1232131321\",\"createdAt\":1544422175283}",
      "{\"body\":\"as\",\"author\":\"1232131321\",\"createdAt\":1544422172691}",
      "{\"body\":\"as\",\"author\":\"1232131321\",\"createdAt\":1544422174265}",
      "{\"body\":\"asd\",\"author\":\"1232131321\",\"createdAt\":1544422172380}",
      "{\"body\":\"asd\",\"author\":\"1232131321\",\"createdAt\":1544422172533}",
      "{\"body\":\"asd\",\"author\":\"1232131321\",\"createdAt\":1544422174121}",
      "{\"body\":\"asd\",\"author\":\"1232131321\",\"createdAt\":1544422174913}",
      "{\"body\":\"asd\",\"author\":\"1232131321\",\"createdAt\":1544422175089}",
      "{\"body\":\"asdadasdasdssad\",\"author\":\"1232131321\",\"createdAt\":1544422077161}",
      "{\"body\":\"asdasdasdasdasd\",\"author\":\"1232131321\",\"createdAt\":1544422075546}",
      "{\"body\":\"asdfg\",\"author\":\"1232131321\",\"createdAt\":1544422175890}",
      "{\"body\":\"asds\",\"author\":\"1232131321\",\"createdAt\":1544422173794}",
      "{\"body\":\"asdsa\",\"author\":\"1232131321\",\"createdAt\":1544422169281}",
      "{\"body\":\"asdsadasdasdsadsa\",\"author\":\"1232131321\",\"createdAt\":1544422080858}",
      "{\"body\":\"asf\",\"author\":\"1232131321\",\"createdAt\":1544422175588}",
      "{\"body\":\"d\",\"author\":\"1232131321\",\"createdAt\":1544422173631}",
      "{\"body\":\"da\",\"author\":\"1232131321\",\"createdAt\":1544422172988}",
      "{\"body\":\"da\",\"author\":\"1232131321\",\"createdAt\":1544422173465}",
      "{\"body\":\"das\",\"author\":\"1232131321\",\"createdAt\":1544422172857}",
      "{\"body\":\"ds\",\"author\":\"1232131321\",\"createdAt\":1544422173149}",
      "{\"body\":\"ds\",\"author\":\"1232131321\",\"createdAt\":1544422173291}",
      "{\"body\":\"dsad\",\"author\":\"1232131321\",\"createdAt\":1544422172048}",
      "{\"body\":\"dsadasdasdas\",\"author\":\"1232131321\",\"createdAt\":1544422168320}",
      "{\"body\":\"sa\",\"author\":\"1232131321\",\"createdAt\":1544422179985}",
      "{\"body\":\"sad\",\"author\":\"1232131321\",\"createdAt\":1544422172209}",
      "{\"body\":\"sad\",\"author\":\"1232131321\",\"createdAt\":1544422175429}",
      "{\"body\":\"sadadasd\",\"author\":\"1232131321\",\"createdAt\":1544422167433}",
      "{\"body\":\"sadsadasdsa\",\"author\":\"1232131321\",\"createdAt\":1544422073969}",
      "{\"body\":\"sbg\",\"author\":\"1232131321\",\"createdAt\":1544422175732}",
      "{\"body\":\"sd\",\"author\":\"1232131321\",\"createdAt\":1544422176025}"
    ],
    "type": "String"
  },
  "id": "2e700320-fc0c-11e8-9eb1-1995556dbf13",
  "participants": {
    "wrapperName": "Set",
    "values": [
      "1232131321",
      "24213123131"
    ],
    "type": "String"
  },
  "updatedAt": 1544422180597
}

Полагаю, мне нужно установить rangeKey в поле createAt внутри массива сообщений. Возможно ли это даже с DynamoDB?можешь поделиться примером?желательно в синтаксисе Dynamoose.

...