sqlite - 反应原生异步存储 | 行太大,无法放入 CursorWindow
问题描述
我AsyncStorage
在 ReactNative 中使用在设备上存储一些数据(大尺寸 >2MB),然后使用以下代码读取它
try {
const value = await AsyncStorage.getItem('date_stored_copy');
} catch (e) {
console.log(e);
}
我收到以下错误:
行太大,无法放入 CursorWindow requiredPos=0, totalRows=1...
有没有办法增加 CursorWindow 的大小,或者 AsyncStorage 的另一种选择?
解决方案
另一种解决方案是将数据分成块然后写入。
我编写了一个使用 AsyncStorage 的包装器,它正是这样做的:https ://gist.github.com/bureyburey/2345dfa88a31e00a514479be37848d42
请注意,它最初是为与 apollo-cache-persist(apollo-client 的持久性库)一起使用而编写的。而且由于 graphql 将数据存储在一个非常扁平的结构中,这个解决方案开箱即用的效果很好。
对于您的情况,如果您存储的对象如下所示:
{
data: { a lot of data here }
}
那么这并不重要,包装器也不起作用
但是如果你的对象看起来像这样:
{
someData: { partial data },
someMoreData: { more partial data },
....
}
然后理论上它应该工作。
全面披露:我还没有彻底测试它,只用 apollo-cache-persist
推荐阅读
- azure-devops - Azure DevOps 代理是否应该清理文件共享工件
- tcl - 如何在 TCL 中的字符串中查找多个子字符串模式
- java - spring boot:出现此错误-无法配置数据源:未指定“url”属性,并且无法配置嵌入式数据源
- javascript - 改变img的形状
- docker - 访问在 docker 容器中运行的 GitLab
- sql - 获取 min(id) 和相应的其他字段以及加入原始字段
- javascript - 无法向下滚动对话框并双击文件夹
- statistics - 如何在gnuplot中隐藏统计命令的输出
- html - 再现定位元素
- python - Displaying my current domain in my django template not working