2017-08-03 5 views
0

Ich habe eine grundlegende api, die Setup wie so ist ...Mirage + JSONAPI Array

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

Sie verfügen jeweils nur Unterstützung zu bekommen, und wenn der Benutzer eine Anfrage an/api/v1/logs macht sie sein sollten alle Protokolle erhalten.

Ich habe die Fabriken und Szenarien in Mirage eingerichtet, aber ich bin mir nicht sicher, wie Sie tatsächlich ein Array von verschiedenen Typen zurückgeben.

Meine aktuelle config.js verursacht Ember, sich über einen undefinierten Ressourcentyp zu beschweren.

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

Was mache ich falsch?

+0

hatten Sie eine Chance, die Antwort zu versuchen, die ich zur Verfügung stellte? – alptugd

Antwort

0

Was von einer typischen Routendefinition (die mehrere Daten zurückgibt) in mirage's config.js zurückgegeben wird, ist vom Typ Collection. Das bedeutet, dass Sie eine Sammlung zurückgeben müssen. Also etw. ähnlich sollten folgende Arbeiten:

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); 
    }); 
} 

ich das falsch verstanden zunächst Ihr Problem und nahm einen anderen Ansatz alle Protokolle und Filterung für Typen zu erstellen und erstellt die folgenden twiddle für Sie. Aber dann habe ich festgestellt, dass Sie für jeden Typ unterschiedliche Daten erstellt haben und dass Sie nur alle zusammenführen müssen. Dann habe ich beschlossen, die Protokolle vom Typ2 und vom Typ3 zu dem von mir vorbereiteten Twiddle hinzuzufügen. Sie können ein Beispiel des oben angegebenen Codes in Aktion innerhalb mirage/config.js unter this.get('/logs/type2type3-logs', function(schema){....} Definition sehen. Ich hoffe, dies wird dir helfen.

Verwandte Themen