Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Netflix Falcor:型号为';让我们动手术吧_Javascript_Falcor - Fatal编程技术网

Javascript Netflix Falcor:型号为';让我们动手术吧

Javascript Netflix Falcor:型号为';让我们动手术吧,javascript,falcor,Javascript,Falcor,我们正在努力融入我们的系统。 我们如何基于过滤器检索路径。例如,如果我们想获取具有done:false值的TODO JSON图形示例: { todosById: { "44": { name: "Login to stackoverflow", done: true, prerequisites: [] }, "54": { name: "Ask

我们正在努力融入我们的系统。 我们如何基于过滤器检索路径。例如,如果我们想获取具有
done:false
值的TODO

JSON图形示例:

{
    todosById: {
        "44": {
            name: "Login to stackoverflow",
            done: true,
            prerequisites: []
        },
        "54": {
            name: "Ask question on stackoverflow",
            done: false,
            prerequisites: [{ $type: "ref", value: ["todosById", 54] }]
        },            
        "64": {
            name: "Accept answer",
            done: false,
            prerequisites: []
        }
    },
    todos: [
        { $type: "ref", value: ["todosById", 44] },
        { $type: "ref", value: ["todosById", 54] },
        { $type: "ref", value: ["todosById", 64] }
    ]
}
现在,我们只想得到尚未完成的TODO:true


在客户端获取所有待办事项和筛选似乎是多余的。我认为我们可能需要使用
调用
操作,但在指南中找不到任何关于如何在JSON图中实现函数的示例。(也不确定是否有更好的方法)

将您的模型视为包含客户可以要求的所有内容,而不仅仅是存储的数据。这就是你想要的:

{
    todosByDone: {
        "true": [
            { $type: "ref", value: ["todosById", 44] }
        ],
        "false": [
            { $type: "ref", value: ["todosById", 54] },
            { $type: "ref", value: ["todosById", 64] }
        ]
    },
    todosById: {
        "44": {
            name: "Login to stackoverflow",
            done: true,
            prerequisites: []
        },
        "54": {
            name: "Ask question on stackoverflow",
            done: false,
            prerequisites: [{ $type: "ref", value: ["todosById", 54] }]
        },            
        "64": {
            name: "Accept answer",
            done: false,
            prerequisites: []
        }
    },
    todos: [
        { $type: "ref", value: ["todosById", 44] },
        { $type: "ref", value: ["todosById", 54] },
        { $type: "ref", value: ["todosById", 64] }
    ]
}
然后,您可以像任何其他数组一样请求done-todo:
todosByDone.true[0..10]
。当然,你可以设计你想要的模型,而且有很多可能性。从客户端的角度考虑建模。例如,如果客户端可以执行
todos.done
todos.todo
(又称未完成),那就太好了。然后,您的模型将类似于:

{
    todos: {
        done: [
            { $type: "ref", value: ["todos", "byId", 44] }
        ],
        todo: [
            { $type: "ref", value: ["todos", "byId", 54] },
            { $type: "ref", value: ["todos", "byId", 64] }
        ],
        byId: {
            "44": {
                name: "Login to stackoverflow",
                done: true,
                prerequisites: []
            },
            "54": {
                name: "Ask question on stackoverflow",
                done: false,
                prerequisites: [{ $type: "ref", value: ["todos", "byId", 54] }]
            },            
            "64": {
                name: "Accept answer",
                done: false,
                prerequisites: []
            }
        },
        byCreationTime: [
            { $type: "ref", value: ["todos", "byId", 44] },
            { $type: "ref", value: ["todos", "byId", 54] },
            { $type: "ref", value: ["todos", "byId", 64] }
        ]
    },

}

请随意探索一些示例。

谢谢您的回答。您的解决方案确实解决了我在问题中发布的问题,因此我接受了它。但是,如果您可能有10种不同的状态,并且您可能希望显示它们的不同组合,我希望能够同时查看任意数量的状态(例如,刚刚“完成”或“完成、挂起、延迟”等),那么构建一个包含所有组合的模型似乎太多了。@omerts就是这种情况。