Ember.js 加载但不加载&x27;不发送嵌入对象

Ember.js 加载但不加载&x27;不发送嵌入对象,ember.js,ember-data,Ember.js,Ember Data,假设您有以下型号: App.Item = DS.Model.extend({ owner: DS.belongsTo('App.Person', {embedded: true}) }) 这意味着您可以加载此嵌入的关联,但也意味着如果要为已存在的人员创建新项目,则余烬数据还将为每个新项目嵌入person对象 是否可以使其加载嵌入对象,但在创建关联时仅发送ID?i、 e改为发送此邮件: {"item": {"owner_id": 5}} 编辑: 为了澄清,我希望ember数据加载嵌入

假设您有以下型号:

App.Item = DS.Model.extend({
    owner: DS.belongsTo('App.Person', {embedded: true})
})
这意味着您可以加载此嵌入的关联,但也意味着如果要为已存在的人员创建新项目,则余烬数据还将为每个新项目嵌入person对象

是否可以使其加载嵌入对象,但在创建关联时仅发送ID?i、 e改为发送此邮件:

{"item": {"owner_id": 5}}

编辑: 为了澄清,我希望ember数据加载嵌入关系,但是如果我设置{embedded:true} 此代码:

App.Item.createRecord({name: 'Something', owner: App.Person.find(1)});
// And a few moments later when App.Person.find(1) has loaded
App.store.commit()
它将发送以下json:

{ "item": {"name": "Something", owner: { id: 1, name: "whatever" }}
但我想要的是:

{ "item": {"name": "Something", owner_id: 1 }}

基本上,如果我设置embedded=true,则在创建对象时,余烬数据也将嵌入关联。

如果我正确理解您的目标,您不必指定
{embedded:true}
。默认的余烬数据行为是惰性的

如果您使用的是
active\u model\u serializer
(我强烈建议您这样做),您应该声明您的服务器端序列化程序,如下所示:

class ItemSerializer
想要的正是发生的。它不发送嵌入的对象。它只发送ID。我不确定此功能是否包含在最新版本的ember数据中。你用的是什么版本?我用的是一个月前母版的版本。显然,在最新版本中,他们删除了嵌入式加载选项,并计划稍后将其包括在内,请参阅:。真是一团糟…请看我的编辑,我很想加载,但似乎启用该选项也会使余烬数据发送完整的关系,而不仅仅是它们的ID;您需要删除
{embedded:true}
。这就是导致ember数据序列化所有者属性而不仅仅是id的原因。关于服务器端序列化:请参阅ember数据自述文件中的“侧加载”,它显示了JSON的外观。(或者按照Mike的建议使用
活动\u model\u序列化程序