Ember.js 如何在ember data 1.0中提交包含相关模型数据的表单?

Ember.js 如何在ember data 1.0中提交包含相关模型数据的表单?,ember.js,ember-data,Ember.js,Ember Data,我正在从表单数据和另一个承诺(针对相关记录)创建一个记录 这里是我关注的基本JSON //appointment { "id": 6, "details": "test", "customer": 1 } //customer { "id": 1, "name": "Sle eep", "appointments": [6] } 我的余烬数据模型如下所示 App.Appointment = DS.Model.extend({ details: attr('stri

我正在从表单数据和另一个承诺(针对相关记录)创建一个记录

这里是我关注的基本JSON

//appointment
{
  "id": 6,
  "details": "test",
  "customer": 1
}

//customer
{
  "id": 1,
  "name": "Sle eep",
  "appointments": [6]
}
我的余烬数据模型如下所示

App.Appointment = DS.Model.extend({
  details: attr('string'),
  customer: belongsTo('customer', { async: true})
});

App.Customer = DS.Model.extend({
  name: attr('string'),
  appointments: hasMany()
});
this.store.find('customer', 1).then(function(customer) {
  var appointment = {
    details: 'foo',
    customer: customer.get('id')
  }
  this.store.createRecord('appointment', appointment).save();
});
当我创建约会时,它当前看起来像这样

App.Appointment = DS.Model.extend({
  details: attr('string'),
  customer: belongsTo('customer', { async: true})
});

App.Customer = DS.Model.extend({
  name: attr('string'),
  appointments: hasMany()
});
this.store.find('customer', 1).then(function(customer) {
  var appointment = {
    details: 'foo',
    customer: customer.get('id')
  }
  this.store.createRecord('appointment', appointment).save();
});
上面的问题是,当表单数据是承诺时,我的序列化程序做得不好。这就是我创建记录的方式吗?如果没有,这个创建应该是什么样子的

先谢谢你

更新

再看一看,问题似乎出在belongsTo上的async:true。在“createRecord”之前,我可以看到以下内容

对象{详细信息:“asd”,客户:1}


但是,当我跳转到ember data的“createRecord”方法(在RestaAdapter中)时,我注意到现在客户再次被表示为承诺(而不是在调用该方法之前看到的整数值或字符串值)

为什么不在创建记录并发送之前等待查找结果得到解决

var self = this,
    promise = this.store.find('customer', 1); //just to show it's a promise

promise.then(function(customer){

  var appointment = {
    details: 'foo',
    customer: customer
  }
  self.store.createRecord('appointment', appointment).save();
},{
  alert("uh oh end of the world, couldn't find customer");
});
Async并没有很好的文档记录,而且似乎有一些随意的副作用(它仍处于测试阶段,所以我还没有做出重大判断)。也就是说,你的约会有很多没有定义,这里有一个游乐场


我在上面添加了一点细节-似乎async:true可能是本例中问题的一部分是的,我不会怀疑,async有点不可靠,请参阅更新的答案。我创建了一个带有余烬数据的问题,因为它看起来像您提到的库中的一个bug