Falcor возвращать ненужные атомы?

Я провожу некоторые эксперименты с 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" } }

Я бы ожидал что items.51..100 не будет присутствовать в jsonGraph вместо того, чтобы заполняться этими atom ценности.

Почему это происходит и что я могу сделать, чтобы избежать этого?

1 ответ

В настоящее время маршруты, которые не производят никаких данных, материализуются для пустых атомов, поэтому клиент знает, что эти значения действительно не определены (в отличие от того, что еще не кэшировано).

Слияние JSONGraph должно обрабатывать случай, когда ответ может быть только подмножеством путей, которые были запрошены. Если вы запрашиваете три пути, но в ответе JSONGraph есть данные только для двух путей, слияние JSONGraph знает, что остался еще один, и повторяет запрос (но только для отсутствующего пути). Этот процесс повторяется до тех пор, пока мы не достигнем предела повторных попыток или пока не получим данные для всех запрошенных путей.

Таким образом, материализация - это наш способ сообщить кэшу, что он не должен создавать пропущенные пути, и повторно запрашивать эти данные.

Я полагаю, что у нас есть план вскоре отказаться от материализации и сообщать только пути, по которым не было возвращено никаких данных.

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

Другие вопросы по тегам