游标使用复合索引在查询中排序

时间:2015-04-18 11:20:54

标签: javascript cursor indexeddb cursor-position

我想知道如何在使用复合索引的查询中排列记录。

让我们考虑这个例子。

let objetStore = db.createObjectStore('article',{keyPath : 'id'});
objectStore.createIndex('userid-date',['userid','date_created']);

db.transaction('article').objectStore('article').index('userid-date').openCursor(IDBKeyRange.bound([1,new Date(new Date() - 365*86400*1000)],[100,new Date()])).onsuccess = function(e){

};

上述查询中的记录是按userid还是date_created排序的?为什么呢?

1 个答案:

答案 0 :(得分:1)

In IndexedDB, is there a way to make a sorted compound query?。基本上,索引首先按用户id排序,然后按创建日期排序,因为这是传递给createIndex方法的数组中属性的顺序。

排序功能是indexedDB.cmp。这是indexedDB特有的自定义排序功能。您需要阅读indexedDB规范的大部分内容才能理解它。在相关问题中对其进行了部分总结。