我正在使用ember 2.7.0,我正在尝试使用从经过身份验证的令牌派生的currentUser.organization来设置我的ember应用程序。我能够解析currentUser,但是我无法在路由/控制器中解析用户组织的属性。
我的用户模型:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
email: DS.attr('string'),
organization: DS.belongsTo('organization', { polymorphic: true, async: false } )
});
我已经创建了一个服务,可以像这样拉动用户:
//app/services/session-account.js
import Ember from 'ember';
import jwtDecode from 'npm:jwt-decode';
const { inject: { service }, RSVP } = Ember;
export default Ember.Service.extend({
session: service('session'),
store: service(),
loadCurrentUser() {
return new RSVP.Promise((resolve, reject) => {
const token = this.get('session.data').authenticated.access_token;
if (!Ember.isEmpty(token)) {
var token_payload = jwtDecode(token);
return this.get('store').findRecord('user', token_payload.user_id, { include: 'organization' }).then((user) => {
this.set('account', user);
this.set('organization', user.organization);
resolve();
}, reject);
} else {
resolve();
}
});
}
});
我在用户登录后触发loadCurrentUser,并且我已经验证它成功从后端获取用户(并且组织数据包含在jsonapi响应中),但我可以将服务注入我的控制器/路由并访问用户并获取其直接属性,我无法访问相关组织的任何属性,通过myservice.get('currentUser.organization.name')
(返回未定义)或myservice.get('currentOrganization.name')
,它会抛出以下内容错误:
Uncaught TypeError: Cannot read property '_relationships' of undefined
。
如果我将用户加载为模板中的user.organization的模型和引用属性,一切正常 - 但在javascript方面,我无法进入组织模型。
编辑: 我随后尝试了以下变体:
return this.get('store').findRecord('user', token_payload.user_id, { include: 'organization' }).then((user) => {
this.set('currentUser', user);
user.get('organization').then((organization) => {
this.set('currentOrganization', organization);
}, reject);
resolve();
}, reject);
并且此版本(从ember指南关系文档中提取)抛出错误TypeError:user.get(...)。然后不是函数
答案 0 :(得分:0)
我建议尝试:
1)将this.set('organization', user.organization);
替换为this.set('organization', user.get('organization'));
2)在console.log(user.get('organization'))
之后放this.set('account', user);
并查看输出