Falcor:如何在 falcor 的 JSON Graph 中定义函数?

Posted

技术标签:

【中文标题】Falcor:如何在 falcor 的 JSON Graph 中定义函数?【英文标题】:Falcor: How to define a function in falcor's JSON Graph? 【发布时间】:2016-07-29 16:19:00 【问题描述】:

我对这个模态层库 --- Falcor 非常感兴趣。而且我看了Falcor的官方文档,在JSON Graph section,一个The Abstract JSON Graph Operations的话题,说到call操作,我完全糊涂了。这是我根据官方示例的代码:

var jsonGraphObject = 
    todosById: 
        "44": 
            name: "get milk from corner store",
            addedAt: 29689724399,
            done: false,
            prerequisites: [ $type: "ref", value: ["todosById", 54] ]
        ,
        "54": 
            name: "withdraw money from ATM",
            addedAt: 15687384689,
            done: false,
            prerequisites: []
        
    ,
    todos: [
         $type: "ref", value: ["todosById", 44] ,
         $type: "ref", value: ["todosById", 54] 
    ]
;
var model = new falcor.Model(
  cache: jsonGraphObject
);

然后文档向我展示了如何使用call

model.call(
    // callPath
    ["todos", "add"],
    // arguments
    ["pick up car from the shop"], 
    // refPaths
    [
        ["addedAt"]
    ],
    // thisPaths
    [
        ["length"]
    ])
    .then(console.log.bind(console))

文档只是显示结果,但我的代码不起作用,我完全不知道这个add 函数在哪里,也不知道如何在 Falcor 的 JSON Graph 中定义函数。

我用谷歌搜索了它,但没有得到我的答案。那么那里有任何示例或样板项目吗?谢谢。

【问题讨论】:

找到***.com/questions/37926068/…和github.com/Netflix/falcor/issues/753 【参考方案1】:

函数未缓存,因此它们不能位于传递给Model 构造函数的选项的cache 属性中。

call 会将处理委托给模型的数据源,因此后果取决于数据源的实现。如果您使用在服务器端调用Router 的HttpDataSource,则该函数驻留在服务器上。

【讨论】:

以上是关于Falcor:如何在 falcor 的 JSON Graph 中定义函数?的主要内容,如果未能解决你的问题,请参考以下文章

具有来自外部 Api 的缓存数据的 Falcor 模型

Falcor 如何在服务器端缓存数据?

Falcor - 'get' 不再将引用作为叶值发出

如何在 Jasmine 1 中监视 Falcor 数据模型构造函数

如何在 Falcor 中查找单个项目

Netflix Falcor:模型获取操作中的过滤器