2013-10-08 10 views
0

Ember-Data 용 사용자 지정 어댑터를 Rhom API 용으로 작성했습니다. 새 레코드를 만들 때 createRecord가Ember-Data 사용자 지정 어댑터

'use strict'; 

DS.RhomAdapter = DS.Adapter.extend(Ember.Evented, { 

    extractVars: function(rhomRecord) { 
     return rhomRecord.vars(); 
    }, 

    objectToId: function(record) { 
     record["id"] = record.object; 
     return Ember.copy(record); 
    }, 

    find: function(store, type, id) { 
     console.log('find'); 
     var record = Rho.ORM.getModel(this.model).find(
      'first', 
      { 
       conditions: {object: id} 
      } 
     ); 
     var result = record.vars(); 
     result["id"] = result.object; 
     return Ember.RSVP.resolve(result); 
    }, 

    findAll: function(store, type) { 
     console.log('findALl'); 
     var records = Rho.ORM.getModel(this.model).find('all'); 
     var results = records.map(this.extractVars); 
     var results = results.map(this.objectToId); 
     var promise = new Ember.RSVP.Promise(function(resolve, reject){ 
      // succeed 
      resolve(results); 
      // or reject 
      reject([]); 
     }); 
     return promise; 
    }, 

    createRecord: function(store, type, record) { 
     Rho.ORM.getModel(this.model).create(record.toJSON()); 
     return Ember.RSVP.resolve(); 
    }, 

    updateRecord: function(store, type, record) { 
     console.log(record.get('id')); 
     var result = Rho.ORM.getModel(this.model).find('first', {conditions: {object: record.get('id')}}); 
     result.updateAttributes(record.toJSON()); 
     return Ember.RSVP.resolve(); 
    }, 

    deleteRecord: function(store, type, record) { 
     var result = Rho.ORM.getModel(this.model).find('first', {conditions: {object: record.get('id')}}); 
     result.destroy(); 
     return Ember.RSVP.resolve(); 
    } 


}); 

라고 : 여기

는 코드입니다. 그러나 엠버는 창조 된 대상의 이드를 알지 못합니다. 뷰에서 해당 객체를 수정하려고하면 updateRecord가 호출되고 해당 객체는 전달되지만 해당 객체에는 id가 없습니다. 그렇다면 ID를 모르는 경우 백엔드를 어떻게 업데이트합니까?

답변

1

createRecord이 반환하는 약속은 새 레코드 (ID 포함)로 해결해야합니다.

createRecord: function(store, type, record) { 
    var json = record.toJSON(); 
    Rho.ORM.getModel(this.model).create(record.toJSON()); 
    json.id = .... 
    return Ember.RSVP.resolve(json); 
}, 
+0

오오오 !! 승인. 시도해 볼게. –

+0

내 문제가 해결되었습니다. 감사. – hiroshi

관련 문제