2016-06-06 60 views
1

我們正在嘗試將Netflix's Falcor集成到我們的系統中。 我們如何根據過濾器檢索路徑。例如,如果我們想要得到具有done: false值的Todos。Netflix Falcor:模型獲取操作中的過濾器

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] } 
    ] 
} 

現在,我們只希望得到待辦事項不屬於done: true呢。

在客戶端獲取所有todos和過濾似乎是多餘的。我假設我們可能需要使用call操作,但是我找不到任何有關如何在指南中的JSON圖形中實現函數的示例。 (也不確定是否有更好的方法)

回答

1

想象你的模型包含客戶端可以請求的所有內容,而不僅僅是存儲的數據。這是你想要的:

{ 
    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] } 
    ] 
} 

然後你可以請求做任何其他陣列待辦事項:todosByDone.true[0..10]。當然你可以根據需要設計你的模型,並且有很多可能性。從客戶的角度考慮建模。例如,如果客戶可以做todos.donetodos.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] } 
     ] 
    }, 

} 

隨意探索this app的一些例子。

+0

感謝您的回答。你的解決方案確實解決了我在問題中發佈的問題,因此我已經接受了它。但是,如果您可能有10種不同的狀態,並且您可能想要顯示它們的不同組合,我希望能夠一起查看任意數量的狀態(例如,「完成」或「完成」待定,延期「等),建立一個包含所有組合的模型似乎太多了。 – omerts

+0

@omerts [這個問題](http://stackoverflow.com/questions/37441128/how-to-structure-a-multi-parameter-search-in-falcor)是關於這種情況。 –