-
Star
(247)
You must be signed in to star a gist -
Fork
(74)
You must be signed in to fork a gist
-
-
Save JamesMessinger/a0d6389a5d0e3a24814b to your computer and use it in GitHub Desktop.
| // This works on all devices/browsers, and uses IndexedDBShim as a final fallback | |
| var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB; | |
| // Open (or create) the database | |
| var open = indexedDB.open("MyDatabase", 1); | |
| // Create the schema | |
| open.onupgradeneeded = function() { | |
| var db = open.result; | |
| var store = db.createObjectStore("MyObjectStore", {keyPath: "id"}); | |
| var index = store.createIndex("NameIndex", ["name.last", "name.first"]); | |
| }; | |
| open.onsuccess = function() { | |
| // Start a new transaction | |
| var db = open.result; | |
| var tx = db.transaction("MyObjectStore", "readwrite"); | |
| var store = tx.objectStore("MyObjectStore"); | |
| var index = store.index("NameIndex"); | |
| // Add some data | |
| store.put({id: 12345, name: {first: "John", last: "Doe"}, age: 42}); | |
| store.put({id: 67890, name: {first: "Bob", last: "Smith"}, age: 35}); | |
| // Query the data | |
| var getJohn = store.get(12345); | |
| var getBob = index.get(["Smith", "Bob"]); | |
| getJohn.onsuccess = function() { | |
| console.log(getJohn.result.name.first); // => "John" | |
| }; | |
| getBob.onsuccess = function() { | |
| console.log(getBob.result.name.first); // => "Bob" | |
| }; | |
| // Close the db when the transaction is done | |
| tx.oncomplete = function() { | |
| db.close(); | |
| }; | |
| } |
Awesome :)
I have a comment, which is more of a question. You execute four operations against the store (two writes and two reads). The database is closed when the transaction is completed. From what I there is a high risk that the database will be closed before one of the operations is actually completed. Am I right or am I missing something?
I have a comment, which is more of a question. You execute four operations against the store (two writes and two reads). The database is closed when the transaction is completed. From what I there is a high risk that the database will be closed before one of the operations is actually completed. Am I right or am I missing something?
This one could answer your question:
https://stackoverflow.com/questions/34915581/indexeddb-when-to-close-a-connection
Thanks
Thank you very much