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