我想知道如何在使用复合索引的查询中排列记录。
让我们考虑这个例子。
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
排序的?为什么呢?
答案 0 :(得分:1)
见In IndexedDB, is there a way to make a sorted compound query?。基本上,索引首先按用户id排序,然后按创建日期排序,因为这是传递给createIndex方法的数组中属性的顺序。
排序功能是indexedDB.cmp。这是indexedDB特有的自定义排序功能。您需要阅读indexedDB规范的大部分内容才能理解它。在相关问题中对其进行了部分总结。