尝试将路由模型设置为关联结果时防止 Ember 数据中的重复请求

preventing a duplicate request in Ember Data when trying to set the route model to the result of an association

我有一条路线需要获取父路线中不可用的关联数据,因此我基本上需要重新加载模型,并在此过程中为 JSONAPI 提供 include 指令以嵌入其他模型。所以路线看起来像这样。

import Ember from 'ember';

// route for patients/1/appointments
export default Ember.Route.extend({
  model: function() {
    const query = {
            id: this.modelFor('patient').get('id'),
            include: 'appointments,appointments.practitioner'
          },
          success = function(patient) {
            return patient.get('appointments');
          };

    return this.store.queryRecord('patient', query).then(success);
  }
});

成功回调正在第二次获取约会,这也许并不奇怪,但它似乎也应该知道它在本地商店中有这些约会。因此,我正在尝试解决将模型设置为返回的约会模型集的合理方法。由于各种原因,我们不希望这个特定请求的逻辑存在于适配器中,因为(例如)我们可能并不总是需要在我们获得患者预约时加载从业者方面。有什么想法吗?

我认为您在第一次 queryRecord 之后的服务器响应一定有问题。

I created simple Ember Twiddle that matches your example and is based on mockjax here。正如您在打开控制台时看到的那样,mockjax 仅收到两个请求 - 第一个请求 /patient/1,第二个请求 /patients?...(您的 queryRecord)。

即使我正在呈现与当前患者有关系的所有约会,mockjax 也不会获得任何其他关系查询。您可以查看我为 mockjax 提供的 JSON 回复。你应该将它们与你的 API 进行比较,看看是否存在结构上的差异。