我试图用Ember和Node创建一条记录。显然,Ember喜欢筑巢你的物体。
如果我给它:
to-report calc-HI [ XX YY ]
let sizeX count [my-links] of XX
let sizeY count [my-links] of YY
let sizeXY count (turtle-set [link-neighbors] of XX [link-neighbors] of YY)
report (sizeX + sizeY - sizeXY) / sizeY
end
节点在 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' }
}
是否有办法在不嵌套的情况下发送对象?
答案 0 :(得分:2)
您需要自定义序列化程序。
像这样创建一个应用程序序列化程序:ember g serializer application
。
然后编辑它以使用基本的RESTSerializer。
然后通过覆盖其属性和方法来定制它,以使其产生所需的输出。
自定义的直接方法是normalizeCreateRecordResponse,但这只是表面。
理想情况下,您希望所有类型的操作都具有一致的行为,而不仅仅是createRecord
。因此,您需要研究序列化程序的组织方式。阅读official guide to serializers,介绍JSONSerializer和RESTSerializer,查看RESTSerializer代码库。
答案 1 :(得分:0)
实现这一目标的最简单方法是覆盖Serializer.serializeIntoHash()
http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_serializeIntoHash
serializeIntoHash(hash, type, snapshot, options) {
Ember.merge(hash, this.serialize(snapshot, options));
}
此代码将从所有传出模型中删除该顶级对象。
您可以在Application Serializer ..或任何特定于型号的序列化程序上覆盖它。