Ответ 1
root.deleted.saved
означает, что ваша модель уже удалена, и это изменение сохраняется на сервере. Мое предположение было бы в том, что followers
и followeds
являются наборами пользователей, которые не обязательно не пересекаются.
Я пытаюсь использовать ember-данные в своем приложении для управления последователями/отношениями. У меня проблема, если пользователь попадает в режим включения/выключения ember throws "Попытка обработать событие deleteRecord
находясь в состоянии root.deleted.saved". Кто-нибудь сталкивался с этим раньше?
Код действия ниже
actions: {
follow: function(model){
var component = this;
var store = this.get('targetObject.store');
var session = this.get('targetObject.session');
this.set('isFollowed', true)
/* Follower Side */
Ember.RSVP.hash({
profile: store.find('profile', model),
follower: session.get('currentUser.profile')
}).then(function(rsvp){
var follower = store.createRecord('follower', {
profile: rsvp.profile,
follower: rsvp.follower,
status: 'approved'
});
var followed = store.createRecord('followed', {
profile: rsvp.follower,
followed: rsvp.profile,
status: 'approved'
});
followed.save().then(function(savedFollowed){
rsvp.follower.get('followeds').addObject(savedFollowed);
});
follower.save().then(function(savedFollower){
rsvp.profile.get('followers').addObject(savedFollower);
});
})
},
unfollow: function(model){
var component = this;
var store = this.get('targetObject.store');
var session = this.get('targetObject.session');
this.set('isFollowed', false)
/* Remove Follower Side */
component.set('isFollowed', false)
Ember.RSVP.hash({
profile: store.find('profile', model),
follower: session.get('currentUser.profile')
}).then(function(rsvp){
/* Delete Follower Side */
var follower_id = rsvp.follower.get('id');
rsvp.profile.get('followers').forEach(function(item){
if(follower_id == item.get('followLink')){
item.destroyRecord();
}
})
var profile_id = rsvp.profile.get('id');
rsvp.follower.get('followeds').forEach(function(item){
if(profile_id == item.get('followLink')){
item.destroyRecord();
}
})
})
}
}
ОБНОВИТЬ
Я решил проблему - спасибо GJK за ответ. Для тех, кто сталкивается с этой проблемой, потому что я добавлял запись к родительским моделям "hasMany" с помощью "addObject" - когда я удалял запись, мне также нужно было удалить ее из этого отношения, чтобы ее не было в родителях "hasMany", и это снова появляется в цикле удаления. Короче говоря, решение заключалось в том, чтобы добавить "removeObject (item)", то есть..
item.destroyRecord();
rsvp.follower.get('followeds').removeObject(item);
item.destroyRecord();
rsvp.profile.get('followeds').removeObject(item)
root.deleted.saved
означает, что ваша модель уже удалена, и это изменение сохраняется на сервере. Мое предположение было бы в том, что followers
и followeds
являются наборами пользователей, которые не обязательно не пересекаются.