在related question中,我想知道如何在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分别保存两个模型。?
答案 0 :(得分: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做任何你想做的事。