2017-04-21 46 views
0

related question我想知道如何在ember.js中的一对多关系中将父对象添加到子对象。现在我想知道如何在创建或更新父项时使用新创建的子项同时将它们保存在服务器上。如何在ember js中保存嵌套对象

服务器会想到这样的事情:

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child: { 
     prop1: val1 
     prop2: val2 
    } 
} 

但Ember的有效载荷是这样的:

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child:null 
} 

有一个已经存在的孩子添加到母体时,这同样适用于更新。然后,有效载荷看起来是这样的:

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child:2 
} 

因此,这不是与有效载荷传输的子对象,但只有它,如果现有的ID(否则为null))。是否有可能发送一个像服务器一样的嵌套对象,或者是否必须分别用两个ajax-post/put-requests保存两个模型。

回答

1

我不确定你的服务器为什么期待这样的事情,但你可以这样做。

首先要在父模型你把

child: DS.attr("") //this will give you ability to send any type in your case object to property child. 

然后在其中创建子

this.store.createRecord('parent',{ 
     child: this.store.createRecord('child',{name: "John"}) 
    }); 

,或者如果你有这样的事情

let parent = this.store.findRecord("parent", 1); 
let child = this.store.createRecord('child',{name: "John"}); 
parent.set("child", child); 

个人而言,我会避免,但你可以在js中做任何你想要的。

+0

感谢您的回答。 REST服务器是一个开发的,具有php/zend/appigility的开箱即用的REST HAL规范,并且显示的格式是将数据推送到服务器的方式。我认为能够通过一个请求推送相关记录并让服务器在同一往返中处理它们是非常有意义的。在我的情况下,我有一个公司数据和地址数据的表格。这是一种形式,但是有两个相关的实体。如果我无法将它们发布在一起,我会需要两个ajax调用,我认为这不是很方便。欢迎任何建议。 – Mannimalte

+0

这正是我曾经作为RoR Ember开发者所做的,但是如果你需要类似这样的东西以及你的服务器期望的东西,那么只要你需要旋转,请使用这个让我知道。 –