假设我有一个名为messages
的对象存储库,其结构类似于
{
"id": id,
"from": from,
"conversation": conversation,
"time": time,
"text": text
}
除了text
之外,一切都是数字。
如果我想阅读会话,那么我自然会通过运行store.index("conversation").openCursor(IDBKeyRange.only(conversation))
得到一个游标,但我也希望返回的值按time
排序,我该如何实现呢?
要添加的内容更多,对象商店的主键为id
,id
为time
,fields
越大。
答案 0 :(得分:0)
如果您发布了一些您尝试过的代码,那么您可以更轻松地假设您的问题。
我将假设您查询数据库并获取返回的对象数组
这样的事情(假设日期的存储方式)
let conversation = [
{"id": 1, "from":'from', "conversation":'conversation', "time": 1528735036499 },
{"id": 3, "from":'from', "conversation":'conversation', "time":1528735087860},
{"id": 4, "from":'from', "conversation":'conversation', "time":1528735111224},
{"id": 2, "from":'from', "conversation":'conversation', "time": 1528735070207 }
]
let orderedConvo = conversation.sort((a, b) => a.time - b.time)
console.log(orderedConvo)
你应该在数组上使用.sort()并比较时间,目前它的排序最旧 - 如果你想要最新到最旧,只需切换到b.time - a.time
我特意订购了ID 1-4,以显示它们应该如何按时间排序。这是一个带有排序结果的可待因
答案 1 :(得分:0)
SetTransactionHandler(SqlProviderServices.ProviderInvariantName, () => new CommitFailureHandler());
SetExecutionStrategy(SqlProviderServices.ProviderInvariantName, () => new SqlAzureExecutionStrategy(10, System.TimeSpan.FromSeconds(3)));
为什么我认为这有效,请参阅我对复合指数问题的其他答案