如何在 Falcor 中查找单个项目

How to lookup a individual item in Falcor

我无法弄清楚如何构建用于检索个人记录的路径。例如,假设我有这些路线:

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

所以,userItems路由在itemsById路由中查找相关的item数据。这对于我的应用程序的 list 视图来说很好,但是,我不确定如何为 show 视图(显示单个项目)。

我想如果我在 list 视图中,我可以存储用户单击的项目的索引,然后在 itemsById 路由中查找该索引但是用户可能会直接浏览到 show 查看路线,这意味着我无法知道 itemsById 索引。

我想我可以定义一条通往 return 单个项目的路线:

userItem[{integers:itemId}]

这条路线将 itemId 作为参数,然后在 itemsById 中查找它,但这看起来并不正确,因为 Falcor 建议您不应该使用 ID。

我可能遗漏了什么。有谁知道正确的方法是什么?

我认为你很接近。据我了解,这将是您的个人物品查找路线:

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

itemIds 将作为项目 ID 数组传递到您的路由器。如果用户正在查看单个项目的详细信息视图,那么浏览器的 URL 可能包含如下内容:/items/7bca23。所以在客户端你会做 model.get('itemsById.7bca23.name') 来获取那个项目的名称。

同时,对于列表视图,您将拥有如下路线:

itemsByIndex[{integers:indices}]

indices 将作为一系列数字传递到您的路由器。在客户端你会做 model.get('itemsByIndex[0..20].name')。然后从那条路线你会 return 像这样的对象数组:

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

Falcor 将在同一请求期间跳转到 itemsById 路由以提供请求的图形片段的其余部分。