Emberjs - Два кастомных адаптера

Я разрабатываю приложение, которое должно использовать indexedDB для хранения некоторой информации в автономном режиме, но в случае Safari оно недоступно (пока), поэтому мне нужно использовать webSQL.

Я уже использую этот адаптер для indexedDB с введите здесь описание ссылки polyfill для случая браузера, который не поддерживает indexedDB.

К сожалению, у меня есть серьезная проблема с прокладкой, например, в iOS Safari и Safari, когда в моем приложении мне нужно получить некоторые данные из базы данных, чтобы узнать, существуют ли они, они возвращают мне ошибки.

То-то и то-то:

throwDOMException@http://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

И это вызвано тем, что они используют своего рода взлом, чтобы вернуть какое-то значение, и даже в полифилле они говорят это:

// 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

Итак, мой вопрос: с адаптером indexedDB, могу ли я параллельно добавить другой адаптер для webSQL?


person SuperMarco    schedule 05.06.2014    source источник


Ответы (1)


Я думаю, что лучшим вариантом было бы выбрать правильный адаптер во время выполнения (это то, что вы имеете в виду под параллельным?). Это должно быть так просто:

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

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

App.advanceReadiness();
person GJK    schedule 05.06.2014
comment
Это именно то, что мне было нужно! Но я смог найти только один адаптер для websql в Интернете, знаете ли вы, есть ли какие-то, которые действительно обновлены? - person SuperMarco; 05.06.2014
comment
К сожалению, большинство адаптеров для Ember-Data на самом деле не обновляются слишком часто. Большинство из них создаются, а затем забываются. Я предлагаю написать свой собственный адаптер. Первый займет у вас всего несколько часов. Кроме того, таким образом он сделает именно то, что вам нужно. РЕДАКТИРОВАТЬ: Итак, чтобы ответить на ваш вопрос, нет, я не нашел обновленных. - person GJK; 05.06.2014
comment
Вот что я подумал, я напишу свой, и я могу обновить его и поделиться им, может быть, это поможет кому-то другому ^^. Спасибо еще раз ! - person SuperMarco; 05.06.2014