IDBKeyRange - 用于检索最新行的 openCursor 与 get
IDBKeyRange - openCursor vs get for retrieving the latest row
我倾向于通过这两个查询之一来查询最新记录。
var range = IDBKeyRange.bound([1,0],[1,Date.now()]);
var article = db.transaction('article').objectStore('article').index('userid-date_created');
article.openCursor(range,'prev').onsuccess = function(e){
var rowA = e.target.result.value;
};
//or
article.get(range).onsuccess = function(e){
var rowB = e.target.result;
};
openCursor
方法显然有效,但我不知道 get
方法。
以上查询是否输出相同的记录?
get 查询找到第一个匹配的对象。这类似于打开向前移动的游标,当您没有为 openCursor 指定第二个参数时,或者当您指定 'next' 参数时,就会发生这种情况。
您使用第二个参数 'prev' 打开了游标,它从最后一个匹配的对象开始并向后移动。
显然,匹配对象集合中的第一个和最后一个对象不是同一个对象,除非总共只有一个匹配对象。
我倾向于通过这两个查询之一来查询最新记录。
var range = IDBKeyRange.bound([1,0],[1,Date.now()]);
var article = db.transaction('article').objectStore('article').index('userid-date_created');
article.openCursor(range,'prev').onsuccess = function(e){
var rowA = e.target.result.value;
};
//or
article.get(range).onsuccess = function(e){
var rowB = e.target.result;
};
openCursor
方法显然有效,但我不知道 get
方法。
以上查询是否输出相同的记录?
get 查询找到第一个匹配的对象。这类似于打开向前移动的游标,当您没有为 openCursor 指定第二个参数时,或者当您指定 'next' 参数时,就会发生这种情况。
您使用第二个参数 'prev' 打开了游标,它从最后一个匹配的对象开始并向后移动。
显然,匹配对象集合中的第一个和最后一个对象不是同一个对象,除非总共只有一个匹配对象。