sqlite - React Native AsyncStorage |行太大而无法放入 CursorWindow

标签 sqlite react-native asyncstorage

我正在使用 AsyncStorage在 ReactNative 中在设备上存储一些数据(大尺​​寸>2MB),然后用下面的代码读取它

try {
   const value = await AsyncStorage.getItem('date_stored_copy');
} catch (e) {
   console.log(e);
}

我收到以下错误:

Row too big to fit into 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 一起使用

关于sqlite - React Native AsyncStorage |行太大而无法放入 CursorWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57014171/

相关文章:

java - 安卓房间Base64

c - 如何存储来自 sqlite3_open 的数据库连接句柄?

ios - AppDelegate.m Facebook 和 Twitter handleUrl 函数

mysql - 如何在 axios 请求中将更新的设置状态值作为参数传递

javascript - 如何在 React Native 中使用 AsyncStorage multiGet 检索数据

css - react native : Dynamically change style with AsyncStorage and States

javascript - 如何使 WebSQL 查询同步?

Android 和 SQLite - 检索表的最大 ID

reactjs - React-Native 抽屉式菜单在堆栈导航器屏幕内打开

javascript - react native ListView scrollToEnd 它不起作用