如何在 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 中定义函数?

如何在 Jasmine 1 中监视 Falcor 数据模型构造函数

将多个 Falcor 数据源组合成单个模型

Falcor 路由器无法解析 $ref

如何在本地 falcor 模型数据集上实现突变响应

Rails - 如何查找单个记录(用户名)在主页中向任何访问者显示它