Ember.js 违背承诺获得用户

Ember.js 违背承诺获得用户,ember.js,ember-data,Ember.js,Ember Data,我可能做出了一个失礼的承诺,但在验证一个用户后,我想将该用户的配置文件加载到我创建的App.Sessionsingleton中: App.Session.set( 'userProfile', self.get('store').find('user',App.Session.get('userId')) ); 这将导致进行API调用并返回有效的resultset,但由于某些原因,在调试器中我得到了一个空结果。具体地说,我确实看到了User.id,但是其余的列是空白的 从调试

我可能做出了一个失礼的承诺,但在验证一个用户后,我想将该用户的配置文件加载到我创建的
App.Session
singleton中:

App.Session.set(
    'userProfile', 
    self.get('store').find('user',App.Session.get('userId'))
);
这将导致进行API调用并返回有效的resultset,但由于某些原因,在调试器中我得到了一个空结果。具体地说,我确实看到了
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
      },
  ]
}
我对承诺有点陌生,所以我想如果我把代码改成:

self.get('store').find('user',App.Session.get('userId')).then( function(profile){
    App.Session.set('userProfile', profile);
});
当我写这段新代码时,我对我的新承诺敏锐性感觉很好。不幸的是,我骄傲的时刻以失败而告终。我的第二个代码段的行为与第一个代码段完全相同。嗯

有人能帮忙吗

---------**更新**---------

现在我已经包括了
User
的模型定义和我提到的调试器窗口的图片

用户模型 调试窗口 登录之前,模型查看器如下所示:

然后在登录后显示如下:

然后看看我们看到的记录细节:


好的,答案似乎归结为两件事。首先,处理我尝试过的承诺的第二个代码片段:

self.get('store').find('user',App.Session.get('userId')).then( function(profile){
    App.Session.set('userProfile', profile);
});
方法正确吗。第一种方法只会让你以一种“心碎”的方式“背信弃义”,从技术上讲不是这样,但关键是它不起作用

但是,我的第二个promise实现没有起作用的原因是由于
模型
间接地,特别是由于我为
名称
设置的反序列化器


当反序列化程序在灰烬数据v0.1x世界中运行时,我对此抓挠了一秒钟,所以我做了看起来合适的事情。。。我把责任归咎于余烬数据。来吧,我们都做过了。事实上,余烬数据与此无关,一旦我愿意接受指责,我意识到这仅仅是因为没有将我的
名称
对象转移到我目前正在进行的项目。啊

你的代码看起来不错。您如何看到这些字段是空的?你的模型看起来像什么?@Daniel我在问题中添加了更多细节来回答你的问题。顺便说一句,当你说代码看起来还可以的时候,你是指我在顶部的代码(第一次尝试)还是我后来尝试更具承诺的识字能力?值得一提的是,我注意到了这两种方法之间的差异。。。在第二种方法中,我在调试器中得到了一些错误,我仍然没有整理,并且没有添加
用户
记录。我指的是承诺,这是正确的方法。
self.get('store').find('user',App.Session.get('userId')).then( function(profile){
    App.Session.set('userProfile', profile);
});