IndexedDB changed in IE10 PP6

Monday, Jun 4, 2012 2 minute read Tags: indexeddb javascript ie
Hey, thanks for the interest in this post, but just letting you know that it is over 3 years old, so the content in here may not be accurate.

When building Pinboard for Windows 8 I decided to use IndexedDB as the internal storage for the application since I was writing it using WinJS.

Initially I wrote the application against the Consumer Preview release but when it came time to get it going for the Release Preview I hit a snag, the database layer was completely falling over! I kept getting an InvalidAccessError every time I tried to open a transaction. My code was looking like this:

var transaction = db.transaction('my-store', IDBTransaction.READ_WRITE);

I couldn’t work out what was going wrong here, I hadn’t changed my code and reading the spec at the time everything looked exactly right…

Watch out for fluid specs!

What I hadn’t noticed was that there was a new version of the IndexedDB spec in the works and in this spec the IDBTransaction enum had been dropped in favour of string representations of the transaction types and IE10 was implementing this spec.

So I had to update all my code to remove the enum values in favour of string values:

var readOnlyTransaction = db.transaction('my-store', 'readonly');
var readWriteTransaction = db.transaction('my-store', 'readwrite');

This spec is now the current version and most of the browsers have moved to using it (although Chrome still insists on having the enum available it just raises a warning if you use it) so you’re code should work once updated.

TL;DR

You should use my library, db.js, to simplify your interaction with IndexedDB across the different browsers.