在实现Falcor数据源时,我对为什么有时返回路径值的集合感到困惑:
[{path, value}, {path, value}]
有时您必须提供返回值作为jsonGraph信封:
{jsonGraph: {something: {here: value}}}
我了解整个框架是如何在jsonGraph的上下文中工作的,但是有时路径值的集合会起作用,有时却不起作用。也许我只是在路径值集合中无法正确表示更复杂的jsonGraph形状。
我的天真理解是,falcor将路径值的集合解析为jsonGraph。但是我找不到任何文档。
如果任何人都可以澄清何时使用各自的返回类型,或者路径值的确切集合表示为返回类型,将不胜感激。
跟进
我相信我的问题只是无法正确以pathValue形式表达JSONGraph。例如,如何用pathValues表示此任意JSONGraph结构?
{jsonGraph: {tasksById: {0: "taskA",
1: "taskB",
2: "taskC"}}}
我以为这将是3个路径值的平面集合,其中包含每个“任务”的完整路径,但由于某种原因,它会不断抛出。
[{path: ['tasksById', 0], value: "taskA"}, ...]
这是等效的有效pathValue吗?
最佳答案
get
,set
和call
的处理程序都应接受jsonGraph
或pathValues
的数组(或包含其中任何一个的promise或observables)。有a reported bug使用jsonGraph
来使路径无效(尚未测试过是否仍然是问题),但是除此之外,两者应该等效。我发现pathValues
更易于表达,因此在jsonGraph
方面工作不多。
如您所述,无论处理程序返回什么内容,最终从数据源返回的内容始终是jsonGraphEnvelope
包装jsonGraph
,因此,是的,如果处理程序返回pathValues
,则数据源将处理转换为jsonGraph
的情况。
有时路径值的集合起作用,而有时却不起作用
你能给我举个例子吗?可能是错误,或者是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/