2014-06-05 4 views
0

Je développe une application qui doit utiliser indexedDB pour stocker des informations hors ligne, mais dans le cas de Safari, ce n'est pas (encore) disponible, donc j'ai besoin d'utiliser webSQL.Emberjs - Deux adaptateurs personnalisés

Je utilise déjà this adaptateur pour indexedDB, avec enter link description here polyfill pour le cas du navigateur qui ne supporte pas indexedDB. Malheureusement, j'ai un problème majeur avec le Shim, par exemple, sur iOS Safari et Safari, quand, dans mon application, j'ai besoin de récupérer des données dans la base de données pour voir si elles existent et me retourner des erreurs.

Comme ceci et cela:

[email protected]://localhost/Dev/Websites/myWebsite/js/libs/IndexedDBShim.js:40:16 

Error: Assertion Failed: 0: The operation failed because the requested database object could not be found. For example, an object store did not exist but was being opened 

Et cela est causé par le fait qu'ils utilisent une sorte de hack pour retourner une valeur, et même dans le polyfill ils disent ceci:

// The IndexedDB Specification needs us to return an Object Store immediatly, but WebSQL does not create and return the store immediatly // Hence, this can technically be unusable, and we hack around it, by setting the ready value to false

Donc, ma question est, avec l'adaptateur indexedDB, puis-je ajouter un autre adaptateur pour webSQL en parallèle?

Répondre

1

Je pense que votre meilleure option serait de choisir l'adaptateur correct à l'exécution (est-ce que vous voulez dire par parallèle?). Cela devrait être aussi simple que ceci:

var App = Ember.Application.create(); 
App.deferReadiness(); 

if (window.indexedDB) { 
    App.ApplicationAdapter = IndexedDBAdapter; 
} else { 
    App.ApplicationAdapter = WebSQLAdapter; 
} 

App.advanceReadiness(); 
+0

C'est exactement ce dont j'avais besoin! Mais je ne pouvais trouver qu'un seul adaptateur pour websql sur le web, savez-vous s'il y en a qui sont réellement mis à jour? – SuperMarco

+1

Malheureusement, la plupart des adaptateurs pour Ember-Data ne sont pas vraiment mis à jour trop souvent. La plupart d'entre eux sont créés puis oubliés. Ma suggestion serait d'écrire votre propre adaptateur. Le premier ne devrait vous prendre que quelques heures. De plus, de cette façon, il fera exactement ce dont vous avez besoin. EDIT: Donc, pour répondre à votre question, non, je n'ai pas trouvé de mises à jour. – GJK

+0

C'est ce que j'ai pensé, j'écrirai le mien, et je pourrais le mettre à jour, et le partager, peut-être que cela aiderait quelqu'un d'autre ^^. Merci encore ! – SuperMarco