2013-03-06 17 views
5

Esiste un modo in Ember per configurare un URL REST personalizzato per un modello specifico?URL REST personalizzato per modello specifico

Come con questo modello:

App.Post = DS.Model.extend({ 
    title: DS.attr('string'), 
    comments: DS.hasMany('App.Comment') 
}); 
App.Comment = DS.Model.extend({ 
    content: DS.attr('string'), 
    post: DS.belongsTo('App.Post') 
}); 

E questo negozio:

app.Store = DS.Store.extend({ 
    revision : 11, 
    adapter : DS.RESTAdapter.extend({ 
     namespace : 'rest' 
    }) 
}); 

voglio che i commenti vengono recuperati tramite /rest/post/{id}/comments invece di /rest/comments, che è il comportamento predefinito.
È possibile configurare un rest-url per un modello specifico?

+0

Ho trovato un problema github per quanto riguarda questo caso: https://github.com/emberjs/data/issues/186 –

risposta

1

È questo per letteralmente solo per un modello in tutta l'intera app o è l'uri predefinito "hasMany" utilizzato dal backend REST? Chiedo perché la mia API (django rest framework) usa questo esatto uri e richiedeva una richiesta pull completa sul progetto ember-data perché per costruire l'URL l'adattatore ha bisogno del relativo "genitore" o "proprietario" (qualcosa di rails non mai necessario quindi non esisteva).

Scriverò il proprio adattatore (basta sottoclasse l'adattatore di base in modo da sostituire solo il singolo hasMany diverso). Il metodo che ho scritto per il mio adattatore è sotto ed ecco il mio adattatore completo per riferimento.

Questo è tizzone-dati revisione 11 amichevole btw (non hanno aggiornato a 12 ancora)

https://github.com/toranb/ember-data-django-rest-adapter/blob/master/tests/adapter.js

findMany: function(store, type, ids, parent) { 
     var json = {} 
     , root = this.rootForType(type) 
     , plural = this.pluralize(root) 
     , ids = this.serializeIds(ids) 
     , url = this.buildFindManyUrlWithParent(store, type, ids, parent); 

     this.ajax(url, "GET", { 
      success: function(pre_json) { 
       json[plural] = pre_json; 
       Ember.run(this, function(){ 
        this.didFindMany(store, type, json); 
       }); 
      } 
     }); 
    }, 
2

È possibile registrare un adattatore aggiuntivo e 'portata' al vostro modello.

App.Store.registerAdapter('App.Post', DS.RESTAdapter.extend({ 
    url: "/rest/post/" 
})); 
+0

Direttamente file di post.js modello? Grazie. – Soullivaneuh

Problemi correlati