2017-08-03 98 views
0

我有一个基本的API,它是安装程序是这样的...幻影+ JSONAPI阵列

/api/v1/logs/ 
/api/v1/logs/type1-logs 
/api/v1/logs/type2-logs 
/api/v1/logs/type3-logs 

他们每人只支持GET,如果用户发出请求到/ API/V1 /日志,他们应该是获取所有日志。

我在Mirage有工厂和场景设置,但我不确定如何实际返回不同类型的数组。

我目前的config.js导致ember抱怨未定义的资源类型。

this.get('/logs', function(db, request) { 
    let data = { 
     data: [ 
     db.type1Logs, 
     db.type2Logs, 
     db.type3Logs 
     ] 
    }; 
    return data; 
    }); 

我在做什么错?

+0

你有没有机会尝试我提供的答案? – alptugd

回答

0

从幻象的config.js中的典型路由定义(它返回多个数据)返回的是Collection。这意味着你需要返回一个集合。所以......类似于以下应该工作:

import { Collection } from 'ember-cli-mirage'; 

export default function() { 
    this.get('/logs', function(db, request) { 
     let models = Ember.A(); 
     models.pushObjects(db.type1Logs.all().models); 
     models.pushObjects(db.type2Logs.all().models); 
     models.pushObjects(db.type3Logs.all().models); 

     return new Collection('log', models); 
    }); 
} 

最初我误解你的问题,并把创建所有日志和滤波类型不同的方式,为您创建以下twiddle。但后来我意识到你为每种类型创建了不同的数据,你需要的仅仅是合并所有这些数据。然后,我决定添加type2和type3日志合并到我准备的旋转。您可以在mirage/config.jsthis.get('/logs/type2type3-logs', function(schema){....}定义下看到我在上面提供的代码示例。我希望这能帮到您。