假设我有一个简单的类别和文章系统,并且有一个这样的路径来获取特定类别中所有文章的列表。
categoriesById[{integers:ids}].articles[{ranges:rows}]
现在,该路由是硬编码的,以便最先对文章进行排序,所以当我添加新文章时,我需要(我假设)使一个类别中的所有文章无效,因为我想要文章0
成为新文章。
是否有一种简短的方法可以使一个类别中的所有文章无效,或者我是否需要明确地使article
下的每个categoriesById
无效,或者,是否有办法拼接一个项目进入JSONGraph的列表?
答案 0 :(得分:2)
您可以使用range object。
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
tu返回有关新创建文章或更新文章数量的更多信息。在这里它只返回整个articles
数组必须从客户端的缓存中删除的事实。要返回更多信息,可以向返回的数组添加路径/值对。
答案 1 :(得分:0)
您可以将集合根目录的路径指定为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