【问题标题】:Retrieve ember data relationship with one API call通过一次 API 调用检索 ember 数据关系
【发布时间】:2016-11-09 23:08:12
【问题描述】:

我有两个模型:

门票:

export default DS.Model.extend({

  name: DS.attr('string'),
  email: DS.attr('string'),

  messages: DS.hasMany('message'),

})

消息:

export default DS.Model.extend({


  message: DS.attr('string'),

  date: DS.attr('date'),

  ticket: DS.belongsTo('ticket', { async: true }),

});

还有一个具有这种模型方法的路由器:

  model(params) {
   return this.get('store').findRecord('ticket', params.id,  {reload: true, include: 'messages'});

 },

在页面重新加载一切正常时,只调用了tickets/:id,但有时 ember 会调用一堆messages/:id。为什么不使用包含的数据并尝试从服务器检索?

我在 hasMany 关系上尝试过async: false,但出现了这个错误:

Error: Assertion Failed: You looked up the 'messages' relationship on a 'ticket' with id 15 but some of the associated records were not loaded. Either make sure they are all loaded together with the parent record, or specify that the relationship is async (`DS.hasMany({ async: true })`)

有什么想法吗?

这是 GET tickets/:id 响应:

{"data":
{
"id":"15",
"type":"tickets",
"attributes":{...},

"relationships":{"messages":{"data":[{"id":"1478482584658","type":"messages"},{"id":"1478482588516","type":"messages"},{"id":"1478517720","type":"messages"},{"id":"1478517813","type":"messages"},{"id":"1478517893","type":"messages"},{"id":"1478530030","type":"messages"},{"id":"1478530032","type":"messages"},{"id":"1478533446","type":"messages"}]}}},

"included":[

{"id":"1478482584658","type":"messages","attributes":{...}},{"id":"1478482588516","type":"messages","attributes":{...}},
...
}
}
]
}

为什么不从included 获取数据并对服务器进行其他调用?

【问题讨论】:

    标签: javascript rest ember.js ember-data


    【解决方案1】:

    承诺呢?

    在处理关系时,重要的是要记住它们会返回承诺。 https://guides.emberjs.com/v2.1.0/models/working-with-relationships/#toc_relationships-as-promises

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多