我可能会做出承诺,但在验证用户身份后,我想将用户的个人资料加载到App.Session
我创建的单例中:
App.Session.set(
'userProfile',
self.get('store').find('user',App.Session.get('userId'))
);
这会导致进行 API 调用并返回有效的结果集,但由于某种原因在调试器中我得到一个空结果。具体来说,我确实看到了User.id
但其余的列是空白的。
来自调试器的 JSON 响应如下:
{
"user": {
"id": "1",
"username": "jsmith",
"name": {
"first_name": "Joe",
"last_name": "Smith"
},
"emails": [
{
"id": "52153c0330063",
"name": "work-1",
"type": "other",
"address": "new@notreally.com",
"comments": "",
"status": "active",
"is_primary": false
},
{
"id": "52153d1b90ad0",
"name": "work-2",
"type": "other",
"address": "old@yesreally.com",
"comments": "",
"status": "active",
"is_primary": true
},
]
}
我对 Promises 有点陌生,所以我想如果我将代码更改为:
self.get('store').find('user',App.Session.get('userId')).then( function(profile){
App.Session.set('userProfile', profile);
});
在编写新代码时,我对自己的新 Promise 敏锐度感觉非常好。可悲的是,我的骄傲时刻以失败告终。我的第二个代码片段的行为与第一个完全相同。嗯?
任何人都可以帮忙吗?
- - - - - ** 更新 ** - - - - -
我现在已经包含了模型定义User
和我引用的调试器窗口的图片。
用户模型
App.RawTransform = DS.Transform.extend({
deserialize: function(serialized) {
return serialized;
},
serialize: function(deserialized) {
return deserialized;
}
});
App.NameTransform = DS.Transform.extend({
deserialize: function(serialized) {
return App.Name.create(serialized);
},
serialize: function(deserialized) {
return JSON.stringify(deserialized);
}
});
App.User = DS.Model.extend({
username: DS.attr("string"),
name: DS.attr("name"),
roles: DS.attr("raw"),
goals: DS.attr("raw"),
places: DS.attr("raw"),
emails: DS.attr("raw"),
networks: DS.attr("raw"),
relationships: DS.attr("raw"),
services: DS.attr("raw"),
uom: DS.attr("raw"),
});
调试窗口
在登录之前,模型查看器如下所示:
然后登录后是这样的:
然后查看我们看到的记录详细信息: