使用 react native 和 expo SQLite 在移动设备、iOS 和 Android 上存储大数据
Posted
技术标签:
【中文标题】使用 react native 和 expo SQLite 在移动设备、iOS 和 Android 上存储大数据【英文标题】:Storing big data on a mobile device, iOS and Android, with react native and expo SQLite 【发布时间】:2020-07-25 05:53:43 【问题描述】:我正在开发一个带有 react native 和 expo 的移动应用程序。该应用程序的关键点在于它需要在设备上存储大数据,因为它可以在离线和在线模式下工作。我正在考虑为此尝试 expo SQLite,对此我有几个问题:
-
是否适合在本地设备(android 和 ios)上存储大量数据?
删除数据时,数据库文件大小是减小还是保持原样?
TEXT 类型有什么限制吗?
您能否推荐一些好的文档,因为 expo.io 太短(我认为)?
提前致谢!
【问题讨论】:
您解决了这个问题吗?我很好奇你用的是什么。 【参考方案1】:1) 在 React Native 应用中存储大量数据
Redux-persist 和 SQLite 并不是在移动设备上存储大数据的理想方式。您可以将数据存储在相关操作系统管理的应用程序存储中。您可以使用iOS 上的Documents
或/Library/Caches
或tmp
目录以及Android 上的外部存储或外部sd 卡。您需要在 Android 上具有读写权限,您可以使用react-native-permissions 来处理它。 react-native-fs 是一个保存、读取或删除文件的好库。
2) 删除数据
如果在删除该记录时将二进制文件或文本存储在数据库中,则会减少数据库大小。但是,如果您将文件存储在文档文件夹中并添加对数据库的引用,则删除此引用不会从设备中删除实际文件。你需要自己做这件事。
3) SQLite 限制
我假设您正在存储二进制文件。无论数据类型如何,SQLite 文本类型都有 2 GB 的限制。您可以查看更多信息here
4) 建议
我更喜欢将数据存储在如上所述的本地存储中,并将引用保存在由redux-persist 或本地 SQLite 数据库管理的 Async Storage 中。
【讨论】:
【参考方案2】:我只使用 expo-file-system,因为我的所有数据都存储在一个树中,因此每次更新后很容易将其异步写入文件并在应用打开时加载它。
【讨论】:
以上是关于使用 react native 和 expo SQLite 在移动设备、iOS 和 Android 上存储大数据的主要内容,如果未能解决你的问题,请参考以下文章
React Native 和 Expo - SVG 不会在 iOS 设备上呈现
使用 react-native、Firebase 和 expo 的 signinwithemail 链接错误
如何使用搜索文本输入(expo、react-native)在屏幕上显示项目
React Native - 如何构建 expo react native 应用程序,使其不需要 Expo android 应用程序打开