如何在 Falcor 中查找单个项目
Posted
技术标签:
【中文标题】如何在 Falcor 中查找单个项目【英文标题】:How to lookup a individual item in Falcor 【发布时间】:2016-02-29 17:02:49 【问题描述】:我无法弄清楚如何构建用于检索单个记录的路径。例如,假设我有这些路线:
itemsById[integers:itemIds]["id"]["name"]
userItems[integers:itemIndices]
所以,userItems
路由在itemsById
路由中查找相关的商品数据。这对于我的应用的 list 视图来说很好,但是,我不确定如何为 show 视图(显示单个项目)定义路由。
我想如果我在 list 视图中,我可以存储用户单击的项目的索引,然后在 itemsById
路由中查找该索引,但用户可能会直接浏览到show 视图路径意味着我无法知道itemsById
索引。
我在想我可以定义一个返回单个项目的路线:
userItem[integers:itemId]
这条路线将 itemId
作为参数,然后在 itemsById
中查找它,但这似乎并不正确,因为 Falcor 建议您不应该使用 ID。
我可能遗漏了什么。有谁知道这里的正确方法是什么?
【问题讨论】:
【参考方案1】:我认为你很接近。据我了解,这将是您的个人项目查找路线:
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')
。然后从该路由中返回一个对象数组,如下所示:
path: [ 'itemsByIndex', 0 ],
value: $type: 'ref', value: [ 'itemsById', '7bca23' ]
在同一请求期间,Falcor 将跳转到 itemsById
路由,以供应所请求的图形片段的其余部分。
【讨论】:
谢谢。我有点想我可能必须直接与 itemsById 路由交互 - 但我不确定这是否是一个好习惯。似乎是最好的选择。以上是关于如何在 Falcor 中查找单个项目的主要内容,如果未能解决你的问题,请参考以下文章
Falcor:如何在 falcor 的 JSON Graph 中定义函数?