2015-07-19 6 views
1

Убит несколько дней, пытаясь решить эту проблему.Ember-data with complex url

Обычно я использую угольки преобразование, чтобы получить модель из магазина:

OlaMagic.DashboardIndexRoute = Ember.Route.extend({ 
    model: function(params) { 
     return this.store.findAll('number'); 


    } 

}); 

Это разрешило бы ПОЛУЧИТЬ => DS: RESTAdapter # Аякса GET для http://localhost:8080/api/numbers

Но я не могу найти пути для выполнения запроса по этому адресу: http://localhost:8080/api/profiles/:profile_id/workspaces

BTW http://localhost:8080/api/profiles/:profile_id не возвращает ключ для итерации по рабочим пространствам. Единственный способ получить все рабочие пространства - через прямой URL.

+0

Is ': profile_id' текущего пользователя или любого произвольного пользователя? –

ответ

2

Ну, это не обычный способ для адаптера REST для создания URL-адресов. Как минимум вам нужно будет создать специальный адаптер для модели рабочих пространств, тогда вам нужно будет переопределить urlForQuery (если это запрос) и указать и переместить часть логики, которая находится внутри _buildURL.

адаптеры/workspaces.js

import DS from 'ember-data'; 

export default DS.RESTAdapter.extend({ 
    urlForQuery: function(query, modelName){ 
    var url = ['api','profiles', query.profile, 'workspaces']; 
    delete query.profile; 
    var host = this.get('host'); 
    var prefix = this.urlPrefix(); 

    url = url.join('/'); 
    if (!host && url && url.charAt(0) !== '/') { 
     url = '/' + url; 
    } 

    return url; 
    } 
}); 

Тогда вы сделать что-то вроде этого:

OlaMagic.DashboardIndexRoute = Ember.Route.extend({ 
    model: function(params) { 
    return this.store.query('workspace', {profile: 1}); 
    } 
}); 

Это будет генерировать запрос /API/профили/1/рабочие.

Если вы только когда-либо запроса на рабочее пространство текущего пользователя, то он, вероятно, может быть достаточно просто перекрывая init на адаптере для workspaces и установив более глубокое namespace на ней аутентификации.

+0

ой большой. это сработало. Благодарю. Кстати, похоже, он использовал 1.0.0-бета, и у него не было метода query(). – Macchiatow

+0

@Macchiatow Cool, не забудьте принять ответ, если он правильный. :) –

+0

HI, еще один quetion. Наличие более новой версии ember позволит сделать {profile: 1}. «Ошибка при обработке маршрута: dashboard.index» «Утверждение не выполнено: удаление классов для хранения методов было удалено. Пожалуйста, передайте dasherized string вместо undefined ". Кажется, мне нужно передать ': profile_id', но тогда как адаптер будет анализировать его из параметров, если параметры не входят в область. @KitSunde – Macchiatow

Смежные вопросы