Test IndexedDB: mutating records with a r/w cursor updates indexes on those records
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
firstValue = 'hi';
secondValue = 'bye';
objectStoreInfo = [
{ name: '1', options: {}, key: 1,
entry: { data: firstValue } },
{ name: '2', options: { keyPath: 'foo' },
entry: { foo: 1, data: firstValue } },
{ name: '3', options: { autoIncrement: true },
entry: { data: firstValue } },
{ name: '4', options: { keyPath: 'foo', autoIncrement: true },
entry: { data: firstValue } },
];
i = 0;
dbname = "cursor-update-updates-indexes.html"
indexedDB.deleteDatabase(dbname)
info = objectStoreInfo[i];
indexedDB.open(dbname)
setupObjectStoreAndCreateIndex():
db = event.target.result
objectStore = db.createObjectStore(info.name, info.options);
index = objectStore.createIndex('data_index', 'data', { unique: false });
uniqueIndex = objectStore.createIndex('unique_data_index', 'data', { unique: true });
request = objectStore.add(info.entry, info.key);
trans = db.transaction(info.name, 'readwrite')
trans.oncomplete = test
objectStore = trans.objectStore(info.name)
index = objectStore.index('data_index')
uniqueIndex = objectStore.index('unique_data_index')
request = objectStore.openCursor();
cursor = request.result;
value = cursor.value;
value.data = secondValue;
request = cursor.update(value);
request = index.get(secondValue);
PASS value.data is event.target.result.data
request = uniqueIndex.get(secondValue);
PASS value.data is event.target.result.data
i++;
db.close()
dbname = "cursor-update-updates-indexes.html"
indexedDB.deleteDatabase(dbname)
info = objectStoreInfo[i];
indexedDB.open(dbname)
setupObjectStoreAndCreateIndex():
db = event.target.result
objectStore = db.createObjectStore(info.name, info.options);
index = objectStore.createIndex('data_index', 'data', { unique: false });
uniqueIndex = objectStore.createIndex('unique_data_index', 'data', { unique: true });
request = objectStore.add(info.entry);
trans = db.transaction(info.name, 'readwrite')
trans.oncomplete = test
objectStore = trans.objectStore(info.name)
index = objectStore.index('data_index')
uniqueIndex = objectStore.index('unique_data_index')
request = objectStore.openCursor();
cursor = request.result;
value = cursor.value;
value.data = secondValue;
request = cursor.update(value);
request = index.get(secondValue);
PASS value.data is event.target.result.data
request = uniqueIndex.get(secondValue);
PASS value.data is event.target.result.data
i++;
db.close()
dbname = "cursor-update-updates-indexes.html"
indexedDB.deleteDatabase(dbname)
info = objectStoreInfo[i];
indexedDB.open(dbname)
setupObjectStoreAndCreateIndex():
db = event.target.result
objectStore = db.createObjectStore(info.name, info.options);
index = objectStore.createIndex('data_index', 'data', { unique: false });
uniqueIndex = objectStore.createIndex('unique_data_index', 'data', { unique: true });
request = objectStore.add(info.entry);
trans = db.transaction(info.name, 'readwrite')
trans.oncomplete = test
objectStore = trans.objectStore(info.name)
index = objectStore.index('data_index')
uniqueIndex = objectStore.index('unique_data_index')
request = objectStore.openCursor();
cursor = request.result;
value = cursor.value;
value.data = secondValue;
request = cursor.update(value);
request = index.get(secondValue);
PASS value.data is event.target.result.data
request = uniqueIndex.get(secondValue);
PASS value.data is event.target.result.data
i++;
db.close()
dbname = "cursor-update-updates-indexes.html"
indexedDB.deleteDatabase(dbname)
info = objectStoreInfo[i];
indexedDB.open(dbname)
setupObjectStoreAndCreateIndex():
db = event.target.result
objectStore = db.createObjectStore(info.name, info.options);
index = objectStore.createIndex('data_index', 'data', { unique: false });
uniqueIndex = objectStore.createIndex('unique_data_index', 'data', { unique: true });
request = objectStore.add(info.entry);
trans = db.transaction(info.name, 'readwrite')
trans.oncomplete = test
objectStore = trans.objectStore(info.name)
index = objectStore.index('data_index')
uniqueIndex = objectStore.index('unique_data_index')
request = objectStore.openCursor();
cursor = request.result;
value = cursor.value;
value.data = secondValue;
request = cursor.update(value);
request = index.get(secondValue);
PASS value.data is event.target.result.data
request = uniqueIndex.get(secondValue);
PASS value.data is event.target.result.data
i++;
db.close()
PASS successfullyParsed is true
TEST COMPLETE