我已在 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。似乎并非如此