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.
Es posible que desee ir con Lawnchair , que es bastante conocido, como lo menciona Guido Tapia en la pregunta a la que se vincula.
O eso, o use su solución picnet.data.DataManager .
También eche un vistazo a persistence.js .
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