【问题标题】:Netflix Falcor - When to return pathValues versus jsonGraph from the data source?Netflix Falcor - 何时从数据源返回 pathValues 与 jsonGraph?
【发布时间】:2019-02-27 06:07:13
【问题描述】:

在实现 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 吗?

【问题讨论】:

    标签: javascript falcor


    【解决方案1】:

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

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

    路径值的集合有时会起作用,有时则不起作用

    你能举个例子吗?可能是错误,或者格式错误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"}}}
    

    【讨论】:

    • 我认为问题只是用 pathValues 表达更复杂的 JSONGraph 形状。如果需要,您可以查看我在上面添加的编辑。但为了务实,我将使用 JSONGraph 文字样式来表达更复杂形状的样式。
    • @MFave 你的 pathValues 看起来正确。也许他们不匹配路线?例如类似tasksById[{ranges:indices}]
    猜你喜欢
    • 2015-12-08
    • 2017-02-10
    • 2015-12-31
    • 2017-01-14
    • 2018-01-27
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    相关资源
    最近更新 更多