websql tutorial localstorage chrome javascript web-sql indexeddb

tutorial - Biblioteca de JavaScript para enlazar IndexedDB y WebSQL



pouchdb (6)

Eche un vistazo a esto: github.com/axemclion/IndexedDBShim

Es un polyfill para habilitar IndexedDB usando WebSql. Lo uso y creo que es bastante bueno, pero como cada solución, tiene algunas limitaciones, aunque puede desarrollarlo casi cualquier cosa que quiera sin grandes problemas.

Tengo curiosidad por saber si hay una biblioteca o un proyecto para proporcionar una interfaz genérica a IndexedDB o a WebSQL, dependiendo del soporte del navegador del usuario. Si están usando Chrome / Safari, use WebSQL, si están usando Firefox o Internet Explorer, use IndexedDB.

El póster de esta pregunta parece tener una solución propia, pero no proporcionó ningún código fuente.



Espero que (OP) esté satisfecho con las soluciones sugeridas en la respuesta que ha aceptado.

Para aquellos que todavía están en la búsqueda de una solución capaz (un grupo que puede o no incluir OP), visite BakedGoods .

Es una biblioteca que establece una interfaz uniforme que se puede usar para realizar operaciones de almacenamiento en todas las instalaciones de almacenamiento de clientes nativos y no nativos. También mantiene la flexibilidad y las opciones ofrecidas al usuario por cada uno.

Con ello, realizar operaciones de almacenamiento en cualquiera de los tipos de base de datos admitidos es una cuestión de ...

... especificando las opciones de operación apropiadas y las configuraciones equivalentes para ambos tipos de base de datos:

//If the operation is a set(), and the referenced structures //don''t exist, they will be created automatically. var webSQLOptionsObj = { databaseName: "Example_DB", databaseDisplayName: "Example DB", databaseVersion: "", estimatedDatabaseSize: 1024 * 1024, tableData: { name: "Main", keyColumnName: "lastName", columnDefinitions: "(lastName TEXT PRIMARY KEY, firstName TEXT)" }, tableIndexDataArray: [name: "First_Name_Index", columnNames: "(firstName)"] }; var indexedDBOptionsObj = { databaseName: "Example_DB", databaseVersion: 1, objectStoreData: { name: "Main", keyPath: lastName, autoIncrement: false }, objectStoreIndexDataArray: [ {name: "First_Name_Index", keyPath: "firstName", unique: false, multiEntry: false} ], }; var optionsObj = { conductDisjointly: false, webSQL: webSQLOptionsObj, indexedDB: indexedDBOptionsObj };

... y realizando la operación:

bakedGoods.set({ data: [ {value: {lastName: "Obama", firstName: "Barack"}}, {value: {lastName: "Biden", firstName: "Joe"}} ], storageTypes: ["indexedDB", "webSQL"], options: optionsObj, complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){} });

Su interfaz simple y su incomparable soporte de instalaciones de almacenamiento tienen el costo de la falta de soporte para algunas configuraciones específicas de las instalaciones de almacenamiento. Por ejemplo, no admite la conducción de operaciones de almacenamiento en tablas WebSQL con claves primarias de varias columnas.

Por lo tanto, si hace un uso intensivo de esos tipos de características, es posible que desee buscar en otra parte.

Ah, y por el bien de la transparencia completa, BakedGoods es mantenido por el suyo de verdad :).


He escrito YDN-DB para el propósito exacto. Es un contenedor de base de datos para IndexedDB, WebSql y localStorage, construido en la parte superior de la biblioteca de cierre.

Gol

Hermosa API para una aplicación web segura y robusta de alto rendimiento a gran escala.

Caracteristicas

  • Soporta mecanismos de almacenamiento IndexedDB, Web SQL y localStorage.
  • Módulo de biblioteca de cierre bien probado.
  • Soporte de migración de versión, cifrado, query y transaction .
  • Cada llamada de método es una transacción atómica. Todos los métodos son asíncronos.
  • Siga la etiqueta habitual de javascript como: espacio de nombres único, no global, sin errores de error (a menos que se lo indiquemos en el documento), no eval, consulta parametrizada, esto es, error de error de codificación.
  • JQuery plugin disponible (ver sección de descarga).

Uso básico

Importe el último script JS minificado (vea la sección de descarga) a sus archivos HTML. Esto creará un solo objeto en el ámbito global, llame a ydn.db.Storage.

var db = new ydn.db.Storage(''db name''); db.setItem(''x'', ''some value'') db.getItem(''x'').success(function(value) { console.log(''x = '' + value); }

Consulta

Calcula el promedio usando la consulta

q = db.query(''customer'').average(''age''); avg = q.fetch()

Consulta clave

q = db.query(''customer'', ''age'').bound(18, 25, true).where(''sex'', ''='', ''FEMALE'').select(''full_name'') young_girl_names = q.fetch()

Transacción

p1 = db.key(''player'', 1); db.transaction(function() { p1.get().success(function(p1_obj) { p1_obj.health += 10; p1.put(p123_obj); }); }, [p1]);

Cifrado

Los datos de valor de cadena se pueden cifrar opcionalmente mediante el cifrado SHA-1.

db = new ydn.db.Store(''store name'') db.setSecret(passphase); // generally send from server side upon login db.setItem(key, value, 3600*1000); // data expire on one hour db.getItem(key); // data will be decrypted using the provided passphase


JasonCasden ha compartido una enorme lista de bibliotecas / envoltorios en su presentación En el navegador del navegador y yo . Aquí está la lista:

lawnchair persistence.js persistJS amplify.store localStorageDB https://github.com/axemclion/IndexedDB realStorage YUI3 CacheOffline dojox.storage DomSQL Impel ActiveJS ActiveRecord JazzRecord picnet.data.DataManager ShinyCar lscache Kizzy Artemia microcache.js Store.js


La pregunta está respondida, solo quiero compartir las actualizaciones.

En mayo de 2012 se lanzó JayData , que es la biblioteca de acceso a datos unificada para JavaScript y ayuda a administrar datos en IndexedDB, WebSQL, SQLite, MongoDB, HTML5 localStorage bases de datos y Facebook, OData, WebAPI, YQL con el mismo idioma. sintaxis

Cambiar a IndexedDB desde WebSQL significa solo cambiar el tipo de proveedor de almacenamiento:

var todoDB = new TodoDatabase({ provider: ''webSql'', databaseName: ''MyTodoDatabase'' }); var todoDB = new TodoDatabase({ provider: ''indexedDB'', databaseName: ''MyTodoDatabase'' });

Si no especifica el proveedor, la biblioteca detecta el almacenamiento disponible del navegador / dispositivo en el siguiente orden de prioridad (WebSQL, IndexedDB, HTML5 localStorage).

Descargo de responsabilidad: soy miembro del equipo de desarrolladores del proyecto de código abierto JayData