내 API 응답 :업데이트 모델하지만 전체 백본 수집을 지속
{
firstName: '',
lastName: '',
notifications: [
{
category: '1',
subcategory: '',
source: '',
optInDate: '',
optOutDate: '',
active: ''
},
{
category: '2',
subcategory: '',
source: '',
optInDate: '',
optOutDate: '',
active: ''
}
]
}
응답에 대한 나의 대응하는 백본 구현은 다음과 같습니다
나는 단지 업데이트 할var Notification = Backbone.Model.extend({
initialize: function (args) { },
});
var Notifications = Backbone.Collection.extend({
model: Notification,
url: '/xyz/abc',
parse: function (data) {
return data.notifications;
},
});
"카테고리 1" 모델 (이것은 항상 사실입니다)이라고 말하면서 active: true
이지만 변경된 모델뿐만 아니라 요청 페이로드에 전체 컬렉션을 유지합니다. 백본으로 이것을 어떻게 달성 할 수 있습니까?
특정 모델을 가져 와서 model.set({active: true})
을 호출하고 model.save()
을 호출하려고 시도했지만 그 모델 만 서버에 보냅니다.
전체 응답을 업데이트 된 모델과 함께 서버에 보존해야합니다.
편집 :
내가 아래에 그의 대답에 @Khang's help와이를 달성 할 수 있었다. 그러나 컬렉션과 함께 다른 속성을 보내야한다는 점을 잊어 버렸습니다. 즉 위의 응답에서 firstName
, lastName
입니다.
나는 아래를 포함하도록 parse
메서드를 재정 해요 : 내가 Backbone.sync
를 호출 할 때
parse: function(data) {
this.firstName = data.firstName;
this.lastName = data.lastName;
return data.notifications;
}
는 여전히 페이로드에 불과 컬렉션을 보냅니다. 그 이유는 구문 분석 메서드에서 데이터 개체의 알림 만 반환하기 때문입니다.
API는 RESTFul을 유지하기 위해 전체 DTO가 페이로드로 다시 전송되기를 기대하므로 전체 콜렉션을 페이로드로 다시 보내야합니다. API는 구현 변경에 개방되어 있지 않으므로 프런트 엔드에서 수행해야합니다. Backbone.sync는 어떻게 도움이됩니까? model.set 뒤에 sync를 호출해야합니까? 및 model.save()? – arjary
'save'를 호출 할 필요없이'set'으로 모델을 업데이트하고 db32에 지속하기를 원할 때'sync'를 호출합니다. 작동 한 것은 – Khang
입니다. 죄송합니다. 나는 위의 응답에서 firstName, lastName과 같은 다른 속성도 컬렉션과 함께 보내야한다는 점을 잊어 버렸습니다. 나는 아래와 같이 그들을 파싱하는 방법을 오버라이드했다. - parse : function (data) { this.firstName = data.firstName; this.lastName = data.lastName; return data.notifications; } Backbone.sync를 호출해도 여전히 페이로드에 컬렉션 만 전송됩니다. 그 이유는 구문 분석 메서드에서 데이터 개체의 알림 만 반환하기 때문입니다. 내가 어떻게 이걸 얻을 수 있니? 도와 주셔서 감사합니다 ! – arjary