Test IndexedDB: iterating backwards through an index, skipping duplicates
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
dbname = "index-prev-no-duplicate.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
objectStore = db.createObjectStore(objectStoreName);
First, add all our data to the object store.
request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key);
Now create the indexes.
objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options);
objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options);
objectStore.createIndex(indexData[i].name, indexData[i].keyPath, indexData[i].options);
trans = db.transaction(objectStoreName, 'readwrite')
objectStore = trans.objectStore(objectStoreName)
testPrev()
trans = db.transaction(objectStoreName)
objectStore = trans.objectStore(objectStoreName);
keyIndex = 8;
request = objectStore.index('height').openCursor(null, 'prev');
cursor = event.target.result;
PASS cursor.key is 73
PASS cursor.primaryKey is '237-23-7740'
PASS cursor.value.name is 'Sam'
PASS cursor.value.height is 73
PASS cursor.value.weight is 110
cursor.continue();
keyIndex--;
=> 7
cursor = event.target.result;
PASS cursor.key is 73
PASS cursor.primaryKey is '237-23-7734'
PASS cursor.value.name is 'Ron'
PASS cursor.value.height is 73
PASS cursor.value.weight is 180
cursor.continue();
keyIndex--;
=> 6
cursor = event.target.result;
PASS cursor.key is 65
PASS cursor.primaryKey is '237-23-7739'
PASS cursor.value.name is 'Jef'
PASS cursor.value.height is 65
PASS cursor.value.weight is 120
cursor.continue();
keyIndex--;
=> 5
cursor = event.target.result;
PASS cursor.key is 65
PASS cursor.primaryKey is '237-23-7738'
PASS cursor.value.name is 'Leo'
PASS cursor.value.height is 65
PASS cursor.value.weight is 180
cursor.continue();
keyIndex--;
=> 4
cursor = event.target.result;
PASS cursor.key is 65
PASS cursor.primaryKey is '237-23-7737'
PASS cursor.value.name is 'Pat'
PASS cursor.value.height is 65
PASS cursor.value.weight is 100
cursor.continue();
keyIndex--;
=> 3
cursor = event.target.result;
PASS cursor.key is 65
PASS cursor.primaryKey is '237-23-7736'
PASS cursor.value.name is 'Joe'
PASS cursor.value.height is 65
PASS cursor.value.weight is 150
cursor.continue();
keyIndex--;
=> 2
cursor = event.target.result;
PASS cursor.key is 60
PASS cursor.primaryKey is '237-23-7732'
PASS cursor.value.name is 'Bob'
PASS cursor.value.height is 60
PASS cursor.value.weight is 120
cursor.continue();
keyIndex--;
=> 1
cursor = event.target.result;
PASS cursor.key is 58
PASS cursor.primaryKey is '237-23-7735'
PASS cursor.value.name is 'Sue'
PASS cursor.value.height is 58
PASS cursor.value.weight is 130
cursor.continue();
keyIndex--;
=> 0
cursor = event.target.result;
PASS cursor.key is 52
PASS cursor.primaryKey is '237-23-7733'
PASS cursor.value.name is 'Ann'
PASS cursor.value.height is 52
PASS cursor.value.weight is 110
cursor.continue();
keyIndex--;
=> -1
cursor = event.target.result;
No cursor: null
PASS keyIndex is -1
testPrevNoDuplicate()
objectStore = db.transaction(objectStoreName).objectStore(objectStoreName);
keyIndex = 8;
request = objectStore.index('height').openCursor(null, 'prevunique');
cursor = event.target.result;
keyIndex -= 1
=> Entering with keyIndex = 7
PASS cursor.key is 73
PASS cursor.primaryKey is '237-23-7734'
PASS cursor.value.name is 'Ron'
PASS cursor.value.height is 73
PASS cursor.value.weight is 180
cursor.continue();
keyIndex--;
cursor = event.target.result;
keyIndex -= 3;
=> Entering with keyIndex = 3
PASS cursor.key is 65
PASS cursor.primaryKey is '237-23-7736'
PASS cursor.value.name is 'Joe'
PASS cursor.value.height is 65
PASS cursor.value.weight is 150
cursor.continue();
keyIndex--;
cursor = event.target.result;
=> Entering with keyIndex = 2
PASS cursor.key is 60
PASS cursor.primaryKey is '237-23-7732'
PASS cursor.value.name is 'Bob'
PASS cursor.value.height is 60
PASS cursor.value.weight is 120
cursor.continue();
keyIndex--;
cursor = event.target.result;
=> Entering with keyIndex = 1
PASS cursor.key is 58
PASS cursor.primaryKey is '237-23-7735'
PASS cursor.value.name is 'Sue'
PASS cursor.value.height is 58
PASS cursor.value.weight is 130
cursor.continue();
keyIndex--;
cursor = event.target.result;
=> Entering with keyIndex = 0
PASS cursor.key is 52
PASS cursor.primaryKey is '237-23-7733'
PASS cursor.value.name is 'Ann'
PASS cursor.value.height is 52
PASS cursor.value.weight is 110
cursor.continue();
keyIndex--;
cursor = event.target.result;
=> Entering with keyIndex = -1
No cursor: null
PASS keyIndex is -1
PASS successfullyParsed is true
TEST COMPLETE