2016-09-06 59 views
1

我正在做Falcor(falcor-router)的一些實驗,並想知道爲什麼它有時會返回'原子'值。Falcor返回不想要的原子?

比如我問這個路徑:此路徑存在['items',{from: 0, to: 100},['name', 'value']]

只有50項,因此唯一的路徑items.0..50被填充。

產生的jsonGraph包含正確的值items.0..50,但也包含了像這樣的items.51..100值:

51: { name: { type: "$atom" }, value: { type: "$atom" } }

我預計items.51..100不會在jsonGraph存在,而不是被填充與這些​​值。

爲什麼會發生這種情況,我該怎麼做才能避免它?

+1

通過讀取路由器我可以告訴大家的行爲是故意的源代碼和問題。但是我不知道推理它的原因。我在GitHub上發佈了一個問題:https://github.com/Netflix/falcor-router/issues/189 –

回答

1

目前,不產生數據的路由被實現爲空原子,所以客戶端知道這些值真的是未定義的(相反,只是沒有被緩存)。

JSONGraph合併需要處理的情況下,響應可能只是請求的路徑的一個子集。如果您請求三條路徑,但JSONGraph響應僅包含兩條路徑的數據,則JSONGraph合併知道還有一條路徑,然後重試請求(但僅針對缺少的路徑)。重複此過程直到我們達到重試限制,或者我們已收到所有請求路徑的數據。

所以物化是我們讓緩存知道它不應該建立丟失路徑並重新請求這些數據的方法。

我相信我們有一個計劃,即將離開實現,只傳遞沒有數據返回的路徑。

https://github.com/Netflix/falcor-router/issues/189#issuecomment-247722403