【问题标题】:Falcor Router not resolving $refFalcor 路由器无法解析 $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> 解决了这个问题。

标签: falcor falcor-router


【解决方案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
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-25
    • 2016-02-12
    • 2023-03-26
    • 2015-03-30
    • 1970-01-01
    • 2015-12-08
    • 2017-04-05
    • 2014-12-09
    相关资源
    最近更新 更多