Мы используем Ember-Data со стандартным RestAdapter и до сих пор так хороши. Мы можем сохранять объекты с отношениями OneToOne и ManyToMany, но когда мы пытаемся сохранить объект с отношением OneToMany, любые объекты, добавленные во многие стороны, будут отбрасываться при вызове save()
. Код ниже:Проблемы с сохранением отношений OneToMany в Ember.js
В 2 модели:
Ember.Owner = DS.Model.extend({
name: DS.attr('string'),
pets: DS.hasMany('pet', {async: true});
});
Ember.Pet = DS.Model.extend({
name: DS.attr('string'),
owner: DS.belongsTo('owner', {async: true});
});
код контроллера:
actions: {
save: function() {
var self = this;
var petSaved = function(pet) {
// Create the owner
var owner = self.store.createRecord ('owner', {
name: 'Walt',
});
// Add the new pet then save the owner
owner.get('pets').then(function(pets) {
pets.addObject(pet);
// Logging the owner at this point shows that pet has been added and has been assigned an id from the DB
owner.save();
// Logging the owner at this point shows no pets
});
};
// Create the pet
var pet = this.store.createRecord('pet', {
name: 'Lassie',
});
// Save the pet
pet.save().then(petSaved);
},
},
Используя код, по существу, аналогичный приведенному выше, мы можем успешно сохранить ManyToMany и OneToOne отношения, но по какой-то причине этот код не работает. После многого Google, мы прочитали, что это либо ошибка EmberData, либо явное дизайнерское решение Ember по соображениям эффективности, но последнее не имеет смысла, так как многие отношения ToMany могут быть сохранены таким образом.
Мы будем очень благодарны за понимание этой проблемы и ее устранение, пожалуйста?
Спасибо за ваш ответ, но вы можете объяснить, почему это необходимо, пожалуйста? – RunLoop
Короткий ответ заключается в том, что существует множество комбинаций сериализации и десериализации, которые могут произойти на основе используемого api. Таким образом, Ember Data позволяет вам выбрать способ, которым вы хотите, чтобы он работал. Но я согласен с тем, что по умолчанию должно быть 'serialize: 'ids''. – tikotzky