如何在 ember js 中保存嵌套对象

How to save nested objects in 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(如果存在)(否则为空)。是否可以像服务器期望的那样发送嵌套对象,或者我是否必须用两个 ajax-post/put-requests.?

分别保存两个模型

我不确定为什么您的服务器需要这样的东西,但您可以这样实现。

首先在您放置的 parent 模型上

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

那么你在哪里创建 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 中做任何你想做的事。