Falcor路由器无法解析$ ref

时间:2016-02-07 09:58:22

标签: falcor falcor-router

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

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);
 });

'项目'路由返回对每个项目的引用,但当我发出以下请求时,我得到 undefined 作为我的回复:

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

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

[
    { 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'路由执行次要命中,但这永远不会被触发。

1 个答案:

答案 0 :(得分:0)

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

我将举一个例子,我过去如何解决它:

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
  };
}

正如你所看到的,我已经删除了上面的[“标题”] ......你还必须确保在articlesById中,在返回数据时你有这个“标题”:

{
    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
  });