处理Ember.js中没有返回JSON

时间:2013-12-30 12:50:22

标签: javascript json ember.js

我正在尝试在Ember.JS应用中获取当前用户(如果已登录)。

我正在遵循@ {MilkyWayJoe在this post中概述的一般方法。这需要在ApplcatinController上拥有一个属性 像这样:

App.ApplicationController = Ember.Controller.extend({
  current_user: null,
  init: function(){
    this.set('current_user', this.store.find("user", "me"));
  }
});

哪个工作正常,在用户登录时加载当前用户。但是当用户未登录服务器(正确)时,不返回任何用户。我在控制台中收到以下错误:

Assertion failed: You made a request for a user with id me, but the adapter's response did not have any data

一切仍然有效,但我想避免在控制台中弹出错误。

所以我尝试直接使用find返回的承诺:

App.ApplicationController = Ember.Controller.extend({
 current_user: null,
 init: function(){
   var user_promise = this.store.find("user", "me");
   var app_controller = this;
   user_promise.then(function(user){ //Success
     app_controller.set('current_user', user)
   }, function(reason){  //Fail
     //just resolve the promise, no need to do anything 
   })       
 }
});

其行为与第一个示例完全相同:它可以工作,但仍会在控制台中输出相同的错误。

如何处理用户未登录而未在控制台中出错的情况?

1 个答案:

答案 0 :(得分:0)

对你来说可能太迟了,但对于未来的搜索者来说:

DS.Store.find接受一个承诺作为回报。如果您正在为数据服务编写自己的适配器,而不是使用api的结果调用promise.resolve,则可以调用promise.reject,它将由Ember处理,而不会在控制台中引发错误。