2016-09-06 6 views
1

私はFalcor(falcor-router)を使っていくつかの実験をしています。なぜそれが時々 'atom'値を返すのか疑問に思っています。不要な原子を返すファルコ?

例えば私はこのパスを求めている:['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" } }

Iはitems.51..100がjsonGraphに代わりに移入さ存在しないことが予想うこれらの値は​​です。

なぜこれが起こっているのですか?それを避けるために何ができますか?

+1

私は行動が目的であることを伝えることができ、ルータのソースコードと問題を読み込むことで。しかし、私はそれを考える理由を知らない。私はGitHubに問題を投稿しました:https://github.com/Netflix/falcor-router/issues/189 –

答えて

1

現在、データを生成しないルートは空のアトムにマテリアライズされるので、クライアントはそれらの値が真に未定義であることを知っています。

JSONGraphマージは、応答が要求されたパスのサブセットのみである場合を処理する必要があります。 3つのパスを要求しても、JSONGraphの応答には2つのパスのデータしかない場合、JSONGグラフのマージではまだ1つ残っていることがわかり、要求は再試行されます(欠落しているパスのみ)。このプロセスは、再試行の制限に達するまで、または要求されたすべてのパスのデータを受信するまで繰り返されます。

したがって、マテリアライズは、不足しているパスを構築してこのデータを再要求しないようにキャッシュに知らせる方法です。

私は、すぐに実現することから離れ、データが返されなかったパスだけを伝える計画があると思います。

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