Falcor路由器是否实现了路由排名?

时间:2015-09-11 16:21:26

标签: falcor falcor-router

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

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

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

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

1 个答案:

答案 0 :(得分:2)

是和否。

它实现了路由优先级,意思如下:

具体键:4 整数/范围:2 键:1

因此['name', 'year']['name']的优先级相同。

但是您的规格存在问题。路由器不允许匹配相同路径的相同优先级路由。因此,以下路径优先于等效,因此在路由器构建时会产生错误。

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

这会抛出一个错误,因为范围和整数都匹配同一组传入数据(数字),并且它们都匹配相同的路径(titlesById,数字,名称)。这扩展到您的示例,您有两条匹配相同路径的路由,这不可能发生(当然,除非一条路由与get处理程序匹配,另一条路由与set处理程序匹配)。