在旧的ember js中正确创建hasMany / belongsTo记录

时间:2016-03-09 13:02:48

标签: ember.js ember-data

使用emberjs 1.5.1和ember-data 1.0.0-beta.5。 我有几个型号:

App.Queue = DS.Model.extend({
    queue_id:   attr('number', {}),
    services:   hasMany('service', {})
});

App.Service = DS.Model.extend({
    queue:      belongsTo('queue', {}),
    service_id: attr('number', {}),
});

在这里,我创建queue个实例,保存它,然后尝试创建service个实例并将创建的queue放入belongsTo字段

var new_queue = controller.store.createRecord('queue', {queue_id: element.Item1.Id});
new_queue.save();

var new_service = controller.store.createRecord('service', {
                                    queue: new_queue,
                                    service_id: subelement.Item1.Id,
                                });
new_service.save();

在此之后我获得new_service个实例,queue字段等于undefined。任何想法赞赏

1 个答案:

答案 0 :(得分:0)

考虑到这是一个非常古老且不再受支持的框架版本,请根据我当时对Ember.js的经验和1.10.0

遵循文档,createRecord的结果无法直接使用。通过使用保存功能返回的保证并将所有内容包装在.then回调中,您应该能够实现您正在寻找的内容。

var new_queue = controller.store.createRecord('queue', {
    queue_id: element.Item1.Id
});

new_queue.save().then(function(new_queue_record) {
    var new_service = controller.store.createRecord('service', {
        queue: new_queue_record,
        service_id: subelement.Item1.Id,
    });

    new_service.save();
});