我正在使用 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/