2016-10-11 1 views
0

В нашем приложении Ember, у меня есть 3 различные модели:Как настроить URL-адрес, который вызывает Ember RESTAdapter?

  • организации
  • пользователей
  • вопросы

Вопросы создаются пользователями, которые принадлежат организации. Оба organizations и users имеют массив issues с кучей идентификаторов проблем, которые относятся к модели issues. Например, это то, что users модель выглядит следующим образом:

// app/models/users.js 
export default DS.Model.extend({ 
    name: DS.attr('string'), 
    email: DS.attr('string'), 
    belongsTo: DS.belongsTo('organizations'), 
    issues: DS.hasMany('issues') 
}); 

У нас есть два API, чтобы просмотреть список всех вопросов:

  • GET /users/:userId/issues - Этот API получает все проблемы, созданные пользователем
  • GET /organizations/:organizationId/issues - Этот API получает все вопросы, созданные пользователями, которые принадлежат к этой организации

проблема есть, когда я звоню this.store.findAll('issues');, Ember RESTAdapter звонит GET /issues по умолчанию. Я не могу понять, как заставить RESTAdapter вызывать любой из вышеперечисленных URL. Я не могу использовать this.store.findRecord('issues', 1);, потому что это вызывает определенную проблему по ID, например GET /issues/:issueId. Как я могу заставить RESTAdapter вызывать вышеуказанные URL-адреса без необходимости вручную делать запрос AJAX и вызывать ответ API на Ember Data?

+0

@kristjanreinhold Нет, он просто запускает 'GET/вопросы /: id' где': id' является первым ID в 'issues' массива в модель 'users'. – Nag

ответ

0

Вам необходимо настроить адаптер (вы можете иметь адаптер для каждой модели, если хотите, насколько я знаю).

В вашем конкретном примере я думаю, что вы хотите настроить метод urlForFindAll.

// maybe in app/organization/adapter.js (if using pods for a model specific adapter) 
urlForFindAll(modelName) { 
    return 'urlYouWantToUseWithOrganizations'; 
} 

Хорошая статья об этой ситуации на Ember Igniter

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