2015-01-15 5 views
0

id이있는 모델이 있고 데이터베이스에서 삭제하려고한다고 가정 해보십시오. 따라서 해당 모델에 대해 destroy() 메서드를 호출합니다 (아래 코드 예제 참조). 그러면 OPTIONS HTTP 요청이 전송 된 다음 DELETE HTTP 요청이 전송됩니다. 내 문제는 서버 측에서 DELETE 요청을 멋지게 잡는 동안 모델 id이 무엇인지 말해주는 정보를 찾을 수 없습니다. 요청에 매개 변수가 아니며 URL에 없습니다. 이 정보를 어떻게 찾을 수 있습니까? 설명서 here에서 볼 수 없습니다. 여기에 코드를 저장하고있는 Repo에 link이 있습니다. 내가 기대하는 무엇백본 - 백엔드에서 DELETE 데이터 수신

removeElement: function() { 
    // DELETE in DB 
    this.model.destroy(); 
    this.remove(); 
    this.unbind(); 
    }, 

는 HTTP 요청이 { 'id': 42319 } 또는 일부 등 같은 PARAM을 것입니다.

+2

괜찮을 것입니다. http : // blabla/resource/id는 삭제할 리소스 여야합니다. – Trace

+0

다음은 생성되는 주소입니다 : http : // localhost : 8080/todos/api/v0.1.0 /'. 모델의'id'가 어떻게 설정되지 않았습니까? – Ben

+1

네트워크 패널을 체크하여 ID가 ​​설정되어 있는지 확인할 수 있습니다. url에는 api의 버전 번호 다음에 리소스가 있어야하며 그 뒤에 리소스 ID가옵니다. 그러나이 모든 것은 백엔드 설정 방법에 달려 있습니다. – Trace

답변

0

내 문제는 내가 url 속성을 정의하는 것을이었다 둘 다 modelcollection입니다. collection에 대해서만 url을 정의해야합니다. 멍청한 실수.

1

아마도 모델 ID 속성을 설정해야합니다. 백본에 의해 클라이언트에서 자동으로 설정된 id는 cid이며 id가 아닙니다. (MongoDB를 같은) 다른 고유 키를 사용하여 DB를 가진 일반적인 잡았다 예를 들어 ID as described in the docs

에 해당 키에서 매핑되지 않습니다 :

var Model = Backbone.Model.extend({ 
    idAttribute: "_id" 
    //other model setup code 
}); 
+0

'attribute : 'id','를 모델에 추가하면 (예를 들어), 서버에 HTTP 요청을 보내는 것을 중지합니다. 따라서 어딘가에 무언가 충돌이 발생합니다. 어떤 아이디어? – Ben

+1

urlRoot가 설정되어 있고 서버에 필요한 경로가 올바르게 설정되어 있다고 가정합니다. 모델을 만들 때 ID를 만들지 않았기 때문일 수 있습니다. 이 [예제 앱] (https://github.com/ccoenraets/backbone-cellar/blob/master/tutorial/part3/js/main.js)이 도움이 될 수 있습니다. 'wineDetails' 함수를 꼭보아야합니다. –

+0

내일 볼 것입니다. 문제가 해결되면 답을 표시하겠습니다. 감사합니다 =) – Ben