javascript - Netflix Falcor - 何时从数据源返回 pathValues 与 jsonGraph?

标签 javascript falcor

在实现 Falcor 数据源时,我很困惑为什么有时您可能会返回路径值的集合:

[{path, value}, {path, value}]

有时您必须以 jsonGraph 信封的形式提供返回值:

{jsonGraph: {something: {here: value}}}

我了解整个框架如何在 jsonGraph 的上下文中工作,但有时路径值的集合可以正常工作,有时则不能。也许我只是没有在路径值集合中正确表示更复杂的 jsonGraph 形状。

我天真的理解是路径值的集合被falcor解析为jsonGraph。但是我找不到关于此的任何文档。

如果有人能阐明何时使用相应的返回类型,或者路径值的确切集合表示为返回类型,我们将不胜感激。

跟进

我相信我的问题只是没有正确地以 pathValue 形式表达 JSONGraph。比如这个任意的JSONGraph结构是怎么用pathValues表达的?

{jsonGraph: {tasksById: {0: "taskA",
                         1: "taskB",
                         2: "taskC"}}}

我认为这只是 3 个路径值的平面集合,每个“任务”都有完整路径,但由于某种原因它一直在抛出错误。

[{path: ['tasksById', 0], value: "taskA"}, ...]

这是有效的 pathValue 等价物吗?

最佳答案

getsetcall 的处理程序都应该接受 jsonGraph 数组>pathValues(或包装其中任何一个的 promises 或 observables)。有 a reported bug使用 jsonGraph 使路径无效(还没有测试它是否仍然是一个问题),但除此之外,两者应该是等价的。我发现 pathValues 更容易表达,所以使用 jsonGraph 效果不佳。

正如您所指出的,无论您的处理程序返回什么,最终从数据源返回的始终是 jsonGraphEnvelope 包装 jsonGraph,所以是的,如果您的处理程序返回 pathValues,数据源处理到 jsonGraph 的转换。

sometimes collections of path values just work, and sometimes they don't

你能举个例子吗?可能是错误,也可能是格式错误的 pathValues

编辑

与您的示例几乎匹配的 get 处理程序的示例实现如下所示:

const RootRouter = Router.createClass([
  {
    route: 'tasksById[{integers:indices}]',
    get: ({ indices }) => {
      return indices.map((index) => ({
        path: ['tasksById', index],
        value: `task #${index}`,
      }));
    }
  }
]);

const router = new RootRouter()

router.get([['tasksById', [0, 2]]])
  .subscribe((data) => console.log(data));

// {"jsonGraph":{"tasksById":{"0":"task #0","2":"task #2"}}}

关于javascript - Netflix Falcor - 何时从数据源返回 pathValues 与 jsonGraph?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52467299/

相关文章:

javascript - 优化传统 REST API 数据源和 Falcor 客户端之间的 node.js falcor 路由器

javascript - 如何在javascript中显示选中的复选框值

javascript - 正则表达式匹配字符串中多个单词的开头

javascript - 背景图像在 Chrome 上渲染得太晚

node.js - 无法通过 sidecar 使用外部 API 让 falcor 路由器引用数据

javascript - CSS 网格 - 计算列数 (javascript)

javascript - 父 Div 元素内的图像居中问题

javascript - Falcor 模型如何处理对字符串的引用?

falcor - 为什么我不能在 Falcor 路由器响应中返回一个对象?