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的主要内容,如果未能解决你的问题,请参考以下文章
引起:org.eclipse.jgit.api.errors.RefNotFoundException: Ref master 无法解析