你如何使 Falcor 中的整个范围无效?
How do you invalidate a whole range in Falcor?
假设我有一个简单的类别和文章系统,并且有一个像这样的路径来获取特定类别中所有文章的列表。
categoriesById[{integers:ids}].articles[{ranges:rows}]
现在,该路由被硬编码为先按最新文章排序,因此当我添加新文章时,我需要(我假设)使一个类别中的所有文章无效,因为我想要文章 0
成为新文章。
是否有一种快捷方式可以使一个类别中的整个文章范围无效,或者我是否需要明确地使 categoriesById
下的每个 article
无效,或者,有没有办法将项目拼接到 JSONGraph 中的列表中?
您可以将集合的根路径提供给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
您可以使用 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
了解 return 有关新创建的文章或更新的文章数量的更多信息。这里 return 只是必须从客户端缓存中删除整个 articles
数组这一事实。要 return 更多信息,您可以将 path/value 对添加到 returned 数组。
假设我有一个简单的类别和文章系统,并且有一个像这样的路径来获取特定类别中所有文章的列表。
categoriesById[{integers:ids}].articles[{ranges:rows}]
现在,该路由被硬编码为先按最新文章排序,因此当我添加新文章时,我需要(我假设)使一个类别中的所有文章无效,因为我想要文章 0
成为新文章。
是否有一种快捷方式可以使一个类别中的整个文章范围无效,或者我是否需要明确地使 categoriesById
下的每个 article
无效,或者,有没有办法将项目拼接到 JSONGraph 中的列表中?
您可以将集合的根路径提供给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
您可以使用 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
了解 return 有关新创建的文章或更新的文章数量的更多信息。这里 return 只是必须从客户端缓存中删除整个 articles
数组这一事实。要 return 更多信息,您可以将 path/value 对添加到 returned 数组。