UNPKG

alasql

Version:

AlaSQL.js - JavaScript SQL database library for relational and graph data manipulation with support of localStorage, IndexedDB, and Excel

120 lines (107 loc) 2.54 kB
<h1>Test database</h1> <script> /* var request = window.indexedDB.open("agbase",2); request.onsuccess = function(event) { var db = event.target.result; }; request.onupgradeneeded = function(event) { var db = event.target.result; }; */ function showDatabases(cb) { var request = indexedDB.webkitGetDatabaseNames(); request.onsuccess = function(event){ var dblist = event.target.result; var res = []; for(var i=0;i<dblist.length;i++){ res.push({databaseid: dblist[i]}); } cb(res); }; } function showTables(dbid,cb) { var request = window.indexedDB.open(dbid); request.onsuccess = function(event) { var db = event.target.result; var res = []; var tblist = db.objectStoreNames; for(var i=0;i<tblist.length;i++){ res.push({tableid: tblist[i]}); } cb(res); }; } /* showDatabases(function(data){ var dbs = data; console.log(dbs[1].databaseid); showTables(dbs[1].databaseid, function(data){ console.log(data[0].tableid); getAll('mydb','mycollection',function(data){ console.table(data); }); }); }); */ function getAll(dbid, tableid, cb) { var request = window.indexedDB.open(dbid); request.onsuccess = function(event) { var res = []; var db = event.target.result; db.transaction([tableid]).objectStore(tableid).openCursor().onsuccess = function(event) { var cursor = event.target.result; if(cursor) { res.push(cursor.value); cursor.continue(); } else { cb(res); } } } } function openIndexedDBStream(dbid, tableid) { var stream = {}; stream.databaseid = dbid; stream.tableid = tableid; stream.cursor = undefined; stream.next = function(cb) { if(!stream.cursor) { var request = window.indexedDB.open(stream.databaseid); request.onsuccess = function(event) { var res = []; var db = event.target.result; db.transaction([stream.tableid]).objectStore(stream.tableid).openCursor().onsuccess = function(event) { stream.cursor = event.target.result; if(stream.cursor) { cb(stream.cursor.value); } else { cb(); } }; } } else { stream.cursor.continue(); } }; return stream; }; if(false) { var tm = Date.now(); var st1 = openIndexedDBStream('mydb', 'mycollection'); st1.next(function(data) { if(data) { // console.log(data); st1.next(); } else { console.log(Date.now()-tm); // console.log('finish'); } }); } var tm1 = Date.now(); getAll('ag155','one',function(data){ console.log(data); console.log(Date.now()-tm1); }); </script>