我有一个咖啡订购应用程序,我正在尝试将用户连接到他们的商店。
我正在验证用户,然后在基于ember-simple-auth的会话上设置该用户。那部分可以很好地设置session.currentUser
属性,但是我想设置一个session.myStore
对象,但是我遇到了问题。
现在我正在初始化器中完成所有这些:
// initializers/custom-user.js
export default {
name: 'current-user',
before: 'simple-auth',
initialize: function(container, application) {
Session.reopen({
setCurrentUser: function() {
let appController = container.lookup("controller:application");
application.deferReadiness();
if(this.get('isAuthenticated')) {
let store = container.lookup('store:main');
let _this = this;
return store.find('user', 'me').then((user) => {
// set the current user to be used on the session object
this.set('currentUser', user);
}).then(function(){
// set the store for the current user
store.find('store', {'user': _this.get('currentUser.id')}).then((data) => {
console.log(data);
_this.set('myStore', data);
application.advanceReadiness();
});
})
}
}.observes('isAuthenticated')
});
}
};
我正在获取数据console.log(data);
,但我认为这不是正确的对象。它返回的是类,而不是对象。在其他路由/控制器中,我希望能够返回this.get('session.myStore.id')
之类的内容,但session.myStore
没有我正在寻找的数据
答案 0 :(得分:1)
根据documentation,"当时的返回值本身就是一个承诺。第二个,下游'承诺通过第一个承诺履行或拒绝处理程序"的返回值得到解决。然后,从理论上讲,第一个承诺可能被拒绝,用户未被获取,因此_this.get('currentUser.id')
未定义。我建议您在第一次console.log
调用的处理程序中使用then
来检查此内容。