Как вы лишаете законной силы весь диапазон в Falcor?

Предположим, у меня есть простая система категорий и статей, и есть такой путь, чтобы получить список всех статей в определенной категории.

categoriesById[{integers:ids}].articles[{ranges:rows}]

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

Есть ли краткий способ аннулировать весь диапазон статей в категории, или мне нужно аннулировать каждый article под categoriesById явно, или есть способ разделить элемент в список в JSONGraph?

2 ответа

Решение

Вы можете использовать объект диапазона.

call(path, arg, refPaths, thisPaths) {
    // add new article
    const newLength = // get new length somehow
    return [
        {
            path: [
                "categoriesById", 
                path.categoryId, 
                "articles",
                {length: newLength}
            ],
            invalidated: true
        }
    ]
}

Обратите внимание, что вы можете call вернуть больше информации о недавно созданной статье или обновленном количестве статей. Здесь ничего не возвращается, кроме того факта, что весь articles массив должен быть удален из кэша клиента. Чтобы получить больше информации, вы можете добавить пары путь / значение в возвращаемый массив.

Вы можете указать путь к корню коллекции: invalidate,

var model = new falcor.Model({
  cache: {users: [{name: "Scott"}]}
})

console.log(model.getCache().users) // Object {0: Object, length: Object}
model.invalidate("users")
console.log(model.getCache().users) // undefined

скрипка

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