Ember noob在这里 -
我有两个模型,其中 hasMany 关系如下 -
var Season = DS.Model.extend({
name: DS.attr('string'),
periods: DS.hasMany('period', {
async: false
})
});
var Period = DS.Model.extend({
from: DS.attr('date'),
to: DS.attr('date'),
season: DS.belongsTo('season')
});
一个季节可以没有任何时期存在 - 这就是我创建季节记录并保存的方法 -
var season = this.store.createRecord('season', {
name: name
});
season.save().then(function(season){
/* season saved */
});
POST请求有效负载如下所示 -
{
"season" : {
"name" : "test"
}
}
但后端API期望有效负载如下所示 - 使用空句点数组
{
"season" : {
"name" : "test"
"periods" : []
}
}
我如何实现这一目标?
答案 0 :(得分:0)
在一般情况下,您可以创建一个序列化程序,为所有hasMany关系发送[]。
串行器/ application.js中:
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
serialize(snapshot, options) {
var json = {};
snapshot.eachAttribute(function(name) {
json[name] = snapshot.attr(name);
});
snapshot.eachRelationship(function(name, relationship) {
if (relationship.kind === 'hasMany') {
const list = snapshot.hasMany(name, { ids: true });
if(Ember.isEmpty(list)){
json[name] = [];
}else{
json[name] = list;
}
}
});
return json;
}
});