2016-07-17 1 views
0

ember 2.6에 다음 코드가 있습니다. 엠버 데이터 2.6.1찾을 때 GET 요청 전에 DELETE 요청이 완료됩니다.

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    activate() { 
     var route = this; 
     var sessionId = localStorage.getItem('sessionId'); 
     if (sessionId) { 
      localStorage.removeItem('sessionId'); 
      this.store.findRecord('session', sessionId).then(function found(session) { 
       session.destroyRecord(); 
       route.transitionTo('index'); 
      }); 
     } else { 
      this.transitionTo('sessions.new'); 
     } 
    } 
}); 

나는대로 HBS 템플릿 코드가 로그 아웃 버튼이 있습니다/세션/호출 삭제하면

<li>{{#link-to 'sessions.delete'}}{{fa-icon "fa-lock"}} Logout{{/link-to}}</li> 

Route.extend 코드가 실행됩니다!

1) ***DELETE*** http://dozee.me:3000/api/sessions/<sessionId> 
2) ***GET*** http://dozee.me:3000/api/sessions/<sessionId> 

두 번째 REST 요청 때문에 세션/쿠키가 이미 청소 시간에 의해 발생 및 오류 :

은 내가 관찰하는 REST 호출의 순서가있다.

내가 예상하는 것은 REST 호출의 순서가 실제로는 역순이어야한다는 것이지만 왜 그런 식인지 알 수 없습니다! & 힌트를 이해할 수있을 것이다

모든 포인터)

+0

어디에서 왔는가? (함수 발견 (세션)? –

+0

'findRecord'는 약속을 반환해야합니다. 그렇지 않습니까? – Mayank

+1

그래도 함수 호출을 보지 못했습니다 ... 그래서 내가 묻고있는 이유입니다. . 내가 뭐하는거야 .... ((세션) => {...})), 당신은 ES6과 뚱뚱한 화살을 사용하는 경우 ... 그래서 함수는 귀하의 예를 들어 .. 추가 로이 같은 수 있습니다 그렇다면 (함수 (세션) {} .... 그것없이 시도하십시오 ...하지만 함수를 명명하면 차이를 만들지 확실하지 않습니다 ... –

답변

1

타다가 이미 가게에 해당 세션이 있고 해당 개체를 반환하고, GET 호출을 통해 나중에 개체를 업데이트하려고하기 때문에이 될 수 있습니다.

약속이 이미 상점 객체로 해결 되었기 때문에 삭제 후에 발생할 수 있습니다.

우선 할 수있는 일은 peekRecord를 사용하여 저장소의 세션 개체를 먼저 찾고 개체가 저장소에없는 경우에만 findRecord를 호출하는 것입니다.

다른 방법은 객체가 서버에서 반환 될 때까지 해결되지 않을 세션에 대한 findRecord에 대한 forsed 서버 호출을 만드는 것입니다.

희망이 도움이됩니다.

+0

우수! 고마워. 그게 효과가 있었어. – Mayank