Действительно ли данные ember поддерживают вложенные URL-адреса?
У меня есть объект сеанса верхнего уровня, который может содержать много динамиков.
Моя конечная точка REST ish позволяет мне делать все сессии таким образом
/сессии/
Я могу получить все колонки для заданного сеанса, например:
/сессий/1/колонки/
С текущей версией данных ember-данных я вижу, что он пытается найти все динамики с этим URL
/колонки/
Использование модели данных ниже
CodeCamp.Session = DS.Model.extend({
id: DS.attr('number'),
name: DS.attr('string'),
speakers: DS.hasMany('CodeCamp.Speaker',{nested: true})
});
CodeCamp.Speaker = DS.Model.extend({
id: DS.attr('number'),
name: DS.attr('string'),
session: DS.belongsTo('CodeCamp.Session',{nested: true})
});
Я добавил часть "вложенная: истинная", потому что мне нужны данные ember-data для создания требуемого
/sessions/% @/speakers/
Но этого не произошло -
Я знаю, что могу вручную определить URL-адрес
CodeCamp.Speaker.reopenClass({
url: 'sessions/%@/speakers/'
});
Но при этом мне нужно будет свернуть собственный метод "buildURL" в базовом адаптере REST, чтобы он выглядел так же, как и этот, и при необходимости добавляет родительский идентификатор (и я бы не сделал этого, если это было возможно)
Имеют ли данные ember-данные что-то подобное из коробки или я буду вынужден написать много кода самостоятельно?
Ответы
Ответ 1
{nested: true}
еще не является функцией. Запрос на растяжение по-прежнему открыт.
Отмените и используйте адаптер findQuery()
, чтобы сделать запрос GET с таким URL-адресом.
Кроме того, если ваш сервер Rails (и, возможно, это работает для других фреймворков), можно сохранить URL-адрес запроса одноуровневым, передав родительский идентификатор в качестве параметра querystring:
/speakers?session_id=1