2013-10-08 4 views
0

Я написал специальный адаптер для Ember-Data для использования с Rhom API.Пользовательский адаптер 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(); 
    } 


}); 

Когда создается новая запись, то createRecord называется. Но Ember не знает идентификатора объекта, который был создан. Теперь, когда я пытаюсь изменить этот объект в представлении, вызывается updateRecord и этот объект передается, но у этого объекта нет идентификатора. Итак, как мне обновить бэкэнд, если я не знаю ID?

ответ

1

Обещание, возвращенное createRecord, должно быть разрешено с использованием новой записи (включая идентификатор).

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

Смежные вопросы