2014-09-19 13 views
6

Ich versuche Loopback für eine API, die mit Ember sprechen wird.Making Loopback API Ember.js kompatibel

Ember erfordert, dass JSON in "Schlüsseln" enthalten ist, z. für ein Konto:

{ account: 
    { domain: 'domain.com', 
    subdomain: 'test', 
    title: 'test.domain.com', 
    id: 1 
} } 

Ich habe einige Ratschläge auf der Google-Gruppe zu finden, wie man die Reaktion so zu verändern, dass Ember es erhalten wird, mit afterRemote Haken.

z. in meinen Modellen/account.js:

module.exports = function(Account) { 

    Account.afterRemote('**', function (ctx, account, next) { 
     if(ctx.result) { 
     if(Array.isArray(ctx.result)) { 
      ctx.res.body = { 'accounts': account }; 
     } else { 
      ctx.res.body = { 'account': account }; 
     } 
     } 

     console.log(ctx.res.body); 

     next(); 
    }); 

}; 

Ich sehe, dass die Antwort ist, wie es in der Konsole sein sollte .. aber die JSON Ausgabe auf localhost: 3000/api/Konten zeigen nicht das veränderte JSON-Objekt.

Wie können die JSON-Antworten in Loopback korrekt geändert werden?

Ideal in einer allgemeinen Weise, so dass es auf alle Modelle angewendet werden kann.

+0

Was bedeutet "Explorer" verstehen? –

+0

@torazaburo aktualisierte Frage – Adamski

+0

Ember erfordert nicht, dass Ihr JSON etwas anderes als JSON ist. Ich denke, Sie beziehen sich auf den Standard-REST-Adapter von Ember Data. Ember.js erfordert nicht, dass Sie Ember Data verwenden. Und selbst wenn Sie das tun, können Sie einen benutzerdefinierten Adapter schreiben, der jede Art von gesendetem JSON verarbeiten kann. – Gaurav

Antwort

1

können Sie machen Ember-Daten kompatibel mit Strongloop des Loopback api durch die DS.RESTAdapter mit DS.JSONSerializer wie folgt aus:

// app/adapters/application.js 

import DS from 'ember-data'; 

export default DS.RESTAdapter.extend({ 
    host: 'http://loopback-api-host', 
    namespace: 'api', 
    defaultSerializer: 'JSONSerializer' 
}); 

http://emberjs.com/api/data/classes/DS.JSONSerializer.html

„In Ember Daten, die Logik für die mit einem Back-End-Datenspeicher in Verbindung steht lebt im Adapter. Ember Data's Adapter hat einige eingebaute Annahmen darüber, wie eine REST-API aussehen sollte. Wenn sich Ihre Backend-Konventionen von diesen Annahmen unterscheiden, erleichtert es Ember Data, seine Funktionalität durch Austauschen oder Erweitern des Standard-Adapters zu ändern. "

http://guides.emberjs.com/v2.0.0/models/customizing-adapters/

ähnliche Frage: Strongloop with Emberjs