【问题标题】:Error loading belongsTo relationship in Ember 2在 Ember 2 中加载 belongsTo 关系时出错
【发布时间】:2016-04-27 22:55:13
【问题描述】:

我在加载 belongsTo 关系时遇到问题 - 没有显示错误,也没有发送请求。 UI 只是保持空白。给定以下模型:

project.js 从“ember-data”导入 DS;

export default DS.Model.extend({
    name: DS.attr(),
    items: DS.hasMany('line-item', {async: true}),  
    customer: DS.belongsTo('customer', {async: false})  
});

customer.js

import DS from 'ember-data';

export default DS.Model.extend({
    name: DS.attr(),
    email: DS.attr(),
    projects: DS.hasMany('project', {async: true})  
});

projectcustomer之间存在关系。访问项目端点时,项目会正确返回:

{  
   "data":{  
      "type":"projects",
      "id":"3861b834-e270-4296-b7be-9aca55676874",
      "attributes":{  
         "created":"2016-04-27T22:36:01.061349Z",
         "modified":"2016-04-27T22:36:01.061477Z",
         "name":"Sample name",
      },
      "relationships":{  
         "customer":{  
            "data":{  
               "type":"customers",
               "id":"9242bd41-6bb0-41ed-b5f3-21df26486d9e"
            }
         },
         "items":{  
            "meta":{  
               "count":0
            },
            "data":[  

            ]
         }
      }
   }
}

但是,当尝试访问客户时,什么也没有发生(我的意思是:没有控制台输出,没有对客户端点的请求等。UI 无法加载):

this.get('project').get('customer');

访问其他属性有效(包括项目的项目)。

知道我哪里出错了吗?

【问题讨论】:

  • 我相信既然关系是异步的,那么 get 就会返回一个承诺。 project.get('customer').then((customer) => { // now we can work with the customer });
  • 谢谢新。不幸的是,这不起作用 - 问题似乎是 project.get('customer') - 这是它失败的地方。
  • 返回值是未定义还是实际上是什么?
  • 不,什么都没有——没有返回值。它似乎在试图吸引客户方面失败了。
  • 有几件事。当您访问路由或仅通过访问 API 时,您在 Chrome 中的网络选项卡上发布的 json 是什么?另外,你能发布你的路线代码吗?

标签: ember.js ember-data ember.js-2


【解决方案1】:

在您的project 模型中,您将customer 定义为async: false,这意味着从您的服务器加载项目时应该提供它。从您提供的 json 输出中,客户数据丢失。

所以要么在从服务器返回 json 时包含 customer 记录,要么让客户 async: true,这样在调用 project.get('customer') 时它会被加载

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多