Falcor 路由器无法解析 $ref

Posted

技术标签:

【中文标题】Falcor 路由器无法解析 $ref【英文标题】:Falcor Router not resolving $ref 【发布时间】:2016-05-17 01:50:53 【问题描述】:

我的路由器上定义了以下路径:

getProjectById[keys:ids][keys:props]
projects[ranges:ranges][keys:props]

在客户端,我可以通过以下查询成功检索单个项目:

model.get(
   ['getProjectById', 'ffd38a56-cca2-11e5-9e6a-695c9890612f', 'name'],
   ['getProjectById', 'ffd38a55-cca2-11e5-9e6a-695c9890612f', 'name']).then((data) => 
  console.log('valid json response ->', data);
 );

'projects' 路由返回对每个单独项目的引用,但是当我提出以下请求时,我得到 undefined 作为我的响应:

model.get(['projects',  from: 0, to: 2, ['name', 'overview']]).then((data) => 
    console.log('response is undefined ->', data);
);

服务器端点返回一个承诺,当它最终解决时,它包含以下路径数组:

[
     path: ['projects', 0], value:  $ref(['getProjectById', 'ffd38a56-cca2-11e5-9e6a-695c9890612f'] ,
     path: ['projects', 1], value:  $ref(['getProjectById', 'ffd38a55-cca2-11e5-9e6a-695c9890612f'] ,
     path: ['projects', 2 ], value :  $atom(undefined) 
]

根据文档,这应该对传入标识符数组的 'getProjectById' 路由执行二次命中,但这永远不会被触发。

【问题讨论】:

更新我已经深入研究,似乎 Falcor 路由器只遍历缓存中的实际内容。我已经更新了 projects 端点,还为“getProjectById”返回了一个额外的路径和值,这可以解决这个问题。 根本问题归结为 projects[ranges:ranges][keys:props] 端点删除 [key:props] b> 解决了这个问题。 【参考方案1】:

我有类似的问题,也许会有所帮助。

我举个例子,我过去是如何解决的:

route: 'articlesById[keys]["_id","title"]',

第一条路线,包含 $ref(不工作):

route: 'articles[integers]["title"]',
get: (pathSet) => 
  // striped

  let articleRef = $ref(['articlesById', currentMongoID]);

  return 
    path: ['articles', index],
    value: articleRef
  ;

使固定:

从文章路由中删除["title"],所以新的工作是代码:

route: 'articles[integers]',
get: (pathSet) => 
  // striped

  let articleRef = $ref(['articlesById', currentMongoID]);

  return 
    path: ['articles', index],
    value: articleRef
  ;

如您所见,我已经删除了上面的 ["title"]...您还必须确保在articlesById 中,您在返回数据时具有此“title”,因此:


    route: 'articlesById[keys]["_id","title"]',
  // striped
  articleResObj.title = "WE HAVE TITLE HERE"; // make sure of this when returning
  results.push(
    path: ['articlesById', currentIdString],
    value: articleResObj
  );

【讨论】:

以上是关于Falcor 路由器无法解析 $ref的主要内容,如果未能解决你的问题,请参考以下文章

使用 Falcor 发送集合和呼叫请求

引起:org.eclipse.jgit.api.errors.RefNotFoundException: Ref master 无法解析

无法将战争部署到Weblogic - 服务器无法解析不属于我的类路径ejb-refs

Falcor - 未缓存的深层嵌套引用

为深度路径构建 falcor 路由器的有效方法?

未找到模块:错误:无法解析 | Vue路由器