2014-06-05 3 views
0

나는 Ember에있는 Adapter의 세계에 대해 끊임없이 나섰습니다. 호환 가능한 브라우저의 webSQL 데이터베이스에 일부 데이터를 저장하기 위해 사용자 정의 어댑터를 만들고 싶습니다.Emberjs - 사용자 정의 어댑터

매우 간단 해 보이지만이 과정의 시작 부분에 붙어 있습니다. 내 app.js 파일에서

DS.WebSQLAdapter = DS.Adapter.extend({ 
    dbName: 'testDb', 
    dbVersion: '1.0', 
    dbDisplayName: 'Test Db', 
    dbSize: (2 * 1024 * 1024), 

    init: function() { 
     this.db = cont.openDatabase(this.dbName, this.dbVersion, this.dbDisplayName, this.dbSize); 
    }, 
    createRecord: function(store, type, query, recordArray) { 
     console.log(data); 
    } 
}) 

:

나는이 별도의 파일에있는

window.App = Ember.Application.create({}); 

App.ApplicationAdapter = DS.WebSQLAdapter; 

을 그리고 난 내 컨트롤러에서이 작업을 수행 할 때

App.ApplicationController = Ember.ArrayController.extend({ 

    actions: { 
     myAction: function() { 
      this.store.createRecord('someDB', {key: 'test', title: 'myTitle'}); 
     } 
    } 
}) 

이 모델 someDB을 찾을 수 없다고 말합니다. 비록 내가 미국인이더라도 내 어댑터 용 모델을 만들어야합니까? websql을 사용하여 데이터를 가져 옵니까?

답변

1

SomeDB이 존재하지 않는다고 알려줍니다. 엠버는 여러분의 코드 어딘가에있을하려면 다음을 기대하고있다 : 당신이 SomeDB 모델을 선언하지 않은 경우, 해당 유형의 새 기록을 만들 수 없습니다

App.SomeDB = DS.Model.extend({}); 

. (최소한 Ember-Data 스토어에서는 안됩니다.)

+0

위대한 작품입니다. 하지만 createRecord를 사용할 때 내 어댑터를 사용하지 않는 것 같지만 저장소를 올바르게 사용하고 있습니다. – SuperMarco

+1

'createRecord()'는 클라이언트 측 레코드 만 생성하므로 어댑터에 닿지 않습니다. 서버에 저장하고 어댑터를 사용하려면 레코드에서'save()'를 호출해야합니다. – GJK

+0

완벽한! 설명 주셔서 감사합니다! – SuperMarco

관련 문제