Как искать отдельный элемент в Falcor

У меня проблемы с выяснением того, как структурировать маршруты для извлечения отдельных записей. Например, допустим, у меня есть следующие маршруты:

itemsById[{integers:itemIds}]["id"]["name"]
userItems[{integers:itemIndices}]

Итак userItems Маршрут ищет соответствующие данные элемента в itemsById маршрут. Это хорошо для представления списка моего приложения, однако я не уверен, как определить маршрут для представления представления (которое отображает отдельный элемент).

Я полагаю, что если бы я был в представлении списка, я мог бы сохранить индекс элемента, по которому пользователь щелкает, и затем искать этот индекс в itemsById маршрут, но пользователь может перейти непосредственно к маршруту просмотра представления, что означает, что у меня нет возможности узнать itemsById индекс.

Я думал, что смогу определить маршрут для возврата отдельного элемента:

userItem[{integers:itemId}]

Этот маршрут принимает itemId в качестве аргумента затем ищет его в itemsById но на самом деле это не совсем правильно, так как Фалькор предлагает вам не работать с идентификаторами.

Я, вероятно, что-то упустил. Кто-нибудь знает, какой здесь правильный подход?

1 ответ

Решение

Я думаю, что ты рядом. Как я понимаю, это будет ваш индивидуальный маршрут поиска предметов:

itemsById[{keys:itemIds}][{keys:props}]

itemIds будет передан вашему маршрутизатору в виде массива идентификаторов элементов. Если пользователь просматривает подробный вид из одного элемента, URL-адрес браузера может содержать что-то вроде этого: /items/7bca23, Так на клиенте вы бы сделали model.get('itemsById.7bca23.name') например, чтобы захватить название этого элемента.

Между тем, для представления списка у вас будет маршрут, подобный следующему:

itemsByIndex[{integers:indices}]

indices будет передан на ваш маршрутизатор в виде серии чисел. На клиенте вы бы сделали model.get('itemsByIndex[0..20].name'), Затем с этого маршрута вы получите массив объектов, подобных этому:

{
  path: [ 'itemsByIndex', 0 ],
  value: { $type: 'ref', value: [ 'itemsById', '7bca23' ] }
}

Фалькор перепрыгнет на itemsById маршрут во время того же запроса, чтобы обеспечить остальную часть запрошенного фрагмента графа.

Другие вопросы по тегам