1

我已在 ember-cli-mirage 中成功创建了一条路线,但无法加载相关数据。

API 应该返回 JSON API 兼容的数据。

我不确定是否有任何好的方法可以调试 mirage 的请求拦截。这是我的 config.js

export default function() {
    this.urlPrefix = 'https://myserver/';
    this.namespace = 'api/v1';

    this.get('/machines', function(db, request) {
        return {
            data: db.machines.map(attrs => (
              {
                  type: 'machines', 
                  id: attrs.id, 
                  attributes: attrs 
              }
            ))
        };
    });

    this.get('/machines/:id', function(db, request){
        let id = request.params.id;
        debugger;

        return {

            data: {
                type: 'machines',
                id: id,
                attributes: db.machines.find(id),
                relationships:{
                    "service-orders": db["service-orders"].where({machineId: id})
                }
            }
        };
    });

    this.get('/machines/:machine_id/service-orders', function(db, request){
        debugger; // this never gets caught
    });
}

其中大部分工作正常(我认为)。我可以在工厂中创建机器和服务订单,并查看正在更新的 db 对象。但是,我的应用程序通常会调用 api 以获取服务订单://myserver/machines/:machine_id/service-orders,请求未被捕获,API 没有任何内容

编辑: 这是我的 Ember 应用程序用于 /machines/:machine_id/service-orders 的路线:

export default Ember.Route.extend(MachineFunctionalRouteMixin, {
  model: function() {
    var machine = this.modelFor('machines.show');
    var serviceOrders = machine.get('serviceOrders');
    return serviceOrders;
  },

  setupController: function(controller, model) {
      this._super(controller, model);
  }
});

以及机器/展示的模型:

export default Ember.Route.extend({
  model: function(params) {
    var machine = this.store.find('machine', params.machine_id);
    return machine;
  },
  setupController: function(controller, model) {
    this._super(controller, model);
    var machinesController = this.controllerFor('machines');
    machinesController.set('attrs.currentMachine', model);
  }
});

直观地说,我认为这machine.get('serviceOrders');会调用 API,而 Mirage 会拦截和处理该 API。似乎并非如此

4

0 回答 0