У меня есть требование для создания чата с использованием только стека 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.