如何在emberfire / emder-data中指定async belongsTo / hasMany关系?

时间:2015-03-30 20:13:20

标签: ember.js ember-data emberfire

我是Ember / ED / EmberFire的新人,如果这是一个微不足道的问题,请道歉。我能够将记录保存到Firebase,但我无法指定与控制器中这些记录的关系。我正在使用

DEBUG: Ember      : 1.10.0
DEBUG: Ember Data : 1.0.0-beta.12
DEBUG: Firebase   : 2.2.3
DEBUG: EmberFire  : 1.4.3
DEBUG: jQuery     : 1.11.2

我有一个模型:

var Patient = DS.Model.extend({
    lastName: DS.attr('string'),
    firstName: DS.attr('string'),
    encounters: DS.hasMany('encounter', {async: true})
});

var Encounter = DS.Model.extend({
    dateOfEncounter: DS.attr('string'),
    patient: DS.belongsTo('patient', {async: true})
});

我只是想指定我新创建的patient对象所关联的encounter。这是我的控制者:

actions: {
        registerEncounter: function() {
            var newEncounter = this.store.createRecord('encounter', {
            dateOfEncounter: this.get('dateOfEncounter'),
            patient: this.store.find('patient', '-Jl8u8Tph_w4PMAXb9H_')         
            });

        newEncounter.save();

        this.setProperties({
            dateOfEncounter: ''
        });
    }
}

我可以在Firebase中成功创建encounter记录,但没有关联的patient属性。我得到的只是

https://github.com/firebase/emberfire/issues/232

1 个答案:

答案 0 :(得分:0)

this.store.find('patient', '-Jl8u8Tph_w4PMAXb9H_')会返回一个承诺。

试试这个:

this.store.find('patient', '-Jl8u8Tph_w4PMAXb9H_').then(function(pat) {
     var newEncounter = this.store.createRecord('encounter', {
        dateOfEncounter: this.get('dateOfEncounter'),
        patient: pat       
     });

     newEncounter.save();
});