无嵌套的Ember createRecord/RESTAdapater
我正在尝试创建一个带有余烬和节点的记录。显然,余烬喜欢嵌套你的对象 如果我给它:无嵌套的Ember createRecord/RESTAdapater,rest,ember.js,ember-data,Rest,Ember.js,Ember Data,我正在尝试创建一个带有余烬和节点的记录。显然,余烬喜欢嵌套你的对象 如果我给它: this.store.createRecord('meal', { name: 'the name', meal_time: 'the time', tolerance: 'ouch' }).save(); 节点在req.body中获取此信息: { meal: { id: 'e5c90c23-1eb1-49e1-a3fa-865944b5eeea', name: '
this.store.createRecord('meal', {
name: 'the name',
meal_time: 'the time',
tolerance: 'ouch'
}).save();
节点在req.body
中获取此信息:
{ meal:
{ id: 'e5c90c23-1eb1-49e1-a3fa-865944b5eeea',
name: 'the name',
meal_time: 'the time',
tolerance: 'ouch' }
}
我宁愿修改余烬面而不是节点面
有没有办法让
createRecord
发送对象而不嵌套它?您需要自定义序列化程序
创建如下应用程序序列化程序:ember g serializer application
然后对其进行编辑以使用basic
然后通过重写其属性和方法对其进行自定义,使其生成所需的输出
定制的直接方法是,但这只是表面
理想情况下,您希望所有类型的操作都具有一致的行为,而不仅仅是
createRecord
。因此,您需要研究序列化程序是如何组织的。阅读、介绍和,浏览RESTSerializer代码库。实现这一点的最简单方法是重写Serializer.serializeIntoHash()
此代码将从所有传出模型中删除顶层对象
您可以在应用程序序列化程序上重写它。。或者您可能拥有的任何特定于模型的序列化程序。余烬就是这样工作的!它试图将模型保存为REST资源。同样从RESTAPI的角度来看,这是正确的。
serializeIntoHash(hash, type, snapshot, options) {
Ember.merge(hash, this.serialize(snapshot, options));
}