我正在查询我的数据库表,如下所示:
function getAllRecords(letter)
{
var trans = db.transaction(["ObservableStates"],"readonly").objectStore("ObservableStates").index('letterIndex');
//get all matching records
var request = trans.openCursor(IDBKeyRange.only([letter]));
request.onsuccess = function(event)
{
var cursor = event.target.result;
if(cursor)
{
count+=1;
cursor.continue();
console.log(cursor);
}
}
request.onerror = function(event)
{
console.log('ERROR LOADING DATA FROM TABLE');
}
//delete all of the returned records
}
我有两条记录,其值为letter
,但只返回第一条记录。 cursor.continue()
似乎在这种情况下不起作用。
任何帮助将不胜感激。感谢
答案 0 :(得分:0)
这应该有效,我无法重现这个问题。您可能会遇到浏览器错误(您正在测试哪个浏览器?)或者您的代码中的错误假设是我未在此处捕获的。
这就是我正在做的事情:
var openRequest = indexedDB.open('test');
openRequest.onupgradeneeded = function() {
var db = openRequest.result;
var store = db.createObjectStore('ObservableStates');
store.createIndex('letterIndex', 'p');
store.put({p: ['a']}, 1);
store.put({p: ['a']}, 2);
};
openRequest.onsuccess = function() {
var db = openRequest.result;
var trans = db.transaction('ObservableStates', 'readonly');
var index = trans.objectStore('ObservableStates').index('letterIndex');
var request = index.openCursor(IDBKeyRange.only(['a']));
request.onsuccess = function() {
var cursor = request.result;
if (cursor) {
console.log(cursor.key, cursor.primaryKey);
cursor.continue();
}
}
};
我看到记录了:
- [" a"] 1
- [" a"] 2
您可能还希望针对您的索引执行count([letter])
请求,以确认它的记录数量与您预期的数量相同。