2014-06-05 2 views
0

오프라인으로 정보를 저장하기 위해 indexedDB를 사용해야하는 앱을 개발 중이지만 Safari의 경우 아직 사용할 수 없기 때문에 webSQL을 사용해야합니다.Emberjs - 두 개의 맞춤 어댑터

이미 indexedDB 용 this 어댑터를 사용하고 있으며, indexedDB를 지원하지 않는 브라우저의 경우 enter link description here polyfill을 사용합니다.

유감스럽게도, 내 앱에서 iOS Safari 및 Safari와 같은 중요한 문제가 있는데, 데이터베이스에 데이터를 가져 와서 오류가 있는지 확인해야합니다.

이것 저것처럼

:

[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 

을 그리고 이것은 그들이 어떤 값을 반환 해킹의 종류를 사용하고, 심지어 polyfill 그들이이 말을 사실로 인해 발생 :

// 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 용 다른 어댑터를 병렬로 추가 할 수 있습니까?

답변

1

나는 최선의 선택은 런타임에 올바른 어댑터를 선택하는 것이라고 생각한다. 다음과 같이 간단해야합니다.

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

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

App.advanceReadiness(); 
+0

정확히 내가 필요한 것입니다. 하지만 웹상에서 websql 용 어댑터를 하나만 찾을 수 있습니다. 실제로 업데이트되는 것이 있는지 알고 있습니까? – SuperMarco

+1

불행히도 Ember-Data 용 어댑터는 실제로 너무 자주 업데이트되지 않습니다. 대부분은 잊혀진 채 만들어집니다. 내 제안은 자신의 어댑터를 작성하는 것입니다. 처음에는 몇 시간 만 걸릴 것입니다. 또한, 이렇게하면 원하는대로 정확하게 처리 할 수 ​​있습니다. 편집 : 그래서 귀하의 질문에 대답, 아니, 나는 최신 것들을 찾지 못했습니다. – GJK

+0

그것이 내가 생각한 것입니다. 나는 내 자신을 쓸 것이며, 나는 그것을 업데이트하고 그것을 공유 할 수 있습니다, 아마도 다른 누군가에게 도움이 될 것입니다 ^^. 다시 한 번 감사드립니다! – SuperMarco