2016-07-17 90 views
0

我在燼2.6中有以下代碼;燼數據2.6.1DELETE請求在GET請求之前完成,當試圖findEnd和destroyRecord在燼

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代碼!

我觀察的是REST調用的順序是:

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

第二REST請求,因爲到那個時候會話/ cookie的已清理拋出和錯誤。

我期望的是REST調用的順序實際上應該是相反的,但我無法弄清楚爲什麼它不是這樣的!

任何指針&提示可以理解的;)

+0

這是從哪裏來的(功能找到(會話)? –

+0

'findRecord'應該返回一個Promise。不是嗎? – Mayank

+1

是的,但我從來沒有看到這個函數調用...這就是爲什麼我問。 。(我的工作是這樣的...)然後((會話)=> {...});如果你使用ES6和胖箭頭...所以在你的例子中發現的功能是額外的..它可以像這樣那麼(功能(會話){} ....嘗試沒有...但不知道命名一個函數會有所作爲... –

回答

1

這可能是因爲燼已經對商店會話和對象歸還給您,並試圖通過一個GET調用後更新的對象。

刪除後可能會發生這種情況,因爲承諾已經用存儲對象解決了。

你可以做什麼是首先用peekRecord查找商店中的會話對象,並且只有當商店中沒有找到對象時才使用findRecord調用。

其他方式將會爲會話中的findRecord發出一個保守的服務器調用,這將不會得到解決直到從服務器返回對象。

希望這有助於你。

+0

非常棒!非常感謝。這工作。 – Mayank