2014-09-19 21 views
6

Próbuję Loopback dla API, który będzie rozmawiał z Ember.Tworzenie zgodnej pętli API Ember.js

Ember wymaga, aby JSON był zawarty w "kluczach", np. na konto:

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

Znalazłem kilka porad na grupie Google o tym, jak zmienia się tak, że odpowiedź Ember otrzyma ją za pomocą haków afterRemote.

E.g. w moich modeli/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(); 
    }); 

}; 

widzę, że odpowiedź jest tak jak powinno być w konsoli .. jednak wyjście JSON na localhost: 3000/api/rachunki nie wykazują odmienny obiekt JSON.

Jaki jest poprawny sposób na zmianę odpowiedzi/żądań JSON w pętli zwrotnej?

Idealnie w sposób ogólny, dzięki czemu można go zastosować do wszystkich modeli.

+0

Co oznacza "badacz" oznacza? –

+0

@torazaburo zaktualizowane pytanie – Adamski

+0

Ember nie wymaga, aby JSON był niczym innym niż JSON. Myślę, że odnosisz się do domyślnego adaptera REST Ember Data. Ember.js nie wymaga używania Ember Data. A nawet jeśli to zrobisz, możesz napisać niestandardowy adapter do obsługi dowolnego wysłanego JSON. – Gaurav

Odpowiedz

1

Można dokonać Ember-dane zgodne z Strongloop w pętli zwrotnej API za pomocą DS.RESTAdapter z DS.JSONSerializer jak ten:

// 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

„W Ember danych, logiki dla komunikowania się z magazynu danych backend mieszka w adapterze Adapter Ember Data ma pewne wbudowane założenia, jak powinien wyglądać interfejs API REST.Jeśli twoje konwencje zaplecza różnią się od tych założeń, Ember Data ułatwia zmianę jego funkcjonalności poprzez zamianę lub rozszerzenie domyślnego adaptera. "

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

Podobne pytanie: Strongloop with Emberjs