我正在尝试在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
})
}
});
其行为与第一个示例完全相同:它可以工作,但仍会在控制台中输出相同的错误。
如何处理用户未登录而未在控制台中出错的情况?
答案 0 :(得分:0)
对你来说可能太迟了,但对于未来的搜索者来说:
DS.Store.find接受一个承诺作为回报。如果您正在为数据服务编写自己的适配器,而不是使用api的结果调用promise.resolve,则可以调用promise.reject,它将由Ember处理,而不会在控制台中引发错误。