簡體   English   中英

當Ember-Data Store未找到任何記錄時,如何處理錯誤/事件?

[英]How to handle error/event when the Ember-Data Store do not find any record?

情況是:

  • session.userID具有正確的ID
  • 但是,后端數據庫(Firebase)中沒有用戶數據

這是代碼:

App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    if (this.session.userID) {
      return this.store.find('user', this.session.userID).then(function(_user) {
        console.log('user found', _user);
        return _user;
      }, function(error) {
        // user does not exist or some other error
        console.log('Application Model did not find user in Firebase');
        return null;
      });
    } else {
      console.log('Application Model did not find any session.userID');
      return null;
    }
  },

}); 

我的期望:被告應調用錯誤函數:

function(error) {
  // user does not exist or some other error
  console.log('Application Model did not find user in Firebase');     
});

錯誤:但是,出現以下錯誤:

    Error: no record was found at https://dynamicslife.firebaseio.com/users/facebook%3A931321683548734
        at https://cdn.firebase.com/libs/emberfire/1.2.7/emberfire.min.js:10:3400
        at c (https://cdn.firebase.com/js/client/1.1.2/firebase.js:17:65)
        at https://cdn.firebase.com/js/client/1.1.2/firebase.js:123:689
        at uc (https://cdn.firebase.com/js/client/1.1.2/firebase.js:50:20)
        at Xe (https://cdn.firebase.com/js/client/1.1.2/firebase.js:123:675)
        at Ve.Vb (https://cdn.firebase.com/js/client/1.1.2/firebase.js:123:617)
        at Ye.Vb (https://cdn.firebase.com/js/client/1.1.2/firebase.js:124:418)
        at https://cdn.firebase.com/js/client/1.1.2/firebase.js:139:409
        at https://cdn.firebase.com/js/client/1.1.2/firebase.js:68:878
        at pc (https://cdn.firebase.com/js/client/1.1.2/firebase.js:62:618) ember.js:14876
    Uncaught Error: Assertion Failed: Error: no record was found at https://dynamicslife.firebaseio.com/users/facebook%3A931321683548734 

問題:我知道沒有記錄可以找到。 但是如何處理這種情況並避免引發錯誤呢? 我的印象是Promise可以讓我在系統崩潰前管理錯誤。

App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    if (this.session.userID) {
      return this.store.find('user', this.session.userID);
    } else {
      console.log('Application Model did not find any session.userID');
      return null;
    }
  },
  afterModel: function(user, transition) {
    if (user.get('length') === 0) {
      console.log('fail');
    } else {
      console.log('success');
    }
  }
});

參見http://emberjs.com/api/classes/Ember.Route.html#method_afterModel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM