1

在研究 Faclor 路由器时,我非常喜欢 KeySets 的功能,它允许路由以任意组合匹配一组实体键,但这让我对路由排名感到好奇。

如果我有路线:"titlesById[{integers:titleIds}]['name','year']"

和另一条路线:"titlesById[{integers:titleIds}]['name']"

当我只请求name密钥时,Falcor 路由器如何确定要使用的路由。我担心的是,当访问多个键而不是单个键时,您可能有更有效的数据访问策略。

4

1 回答 1

2

是和否。

它实现了路由优先级,含义如下:

特定键:4 个整数/范围:2 个键:1

所以['name', 'year']['name']在优先级上是等价的。

但是你的规范有问题。路由器不允许相同优先级路由匹配相同路径。因此以下路径在优先级上是等价的,因此会在 Router 构造时引发错误。

{ route: 'titlesById[{integers:titleId}].name', get: ... },
{ route: 'titlesById[{ranges:titleId}].name', get: ... }, 
...

这将引发错误,因为范围和整数都匹配同一组传入数据(数字)并且它们都匹配相同的路由(titlesById、numbers、name)。这延伸到您的示例,您有两条路线匹配相同的路径,这不会发生(当然,除非一条路线与get处理程序匹配,而另一条路线与处理程序匹配set)。

于 2015-09-30T18:24:17.777 回答