使用 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,对此我有几个问题:

    是否适合在本地设备(androidios)上存储大量数据? 删除数据时,数据库文件大小是减小还是保持原样? TEXT 类型有什么限制吗? 您能否推荐一些好的文档,因为 expo.io 太短(我认为)?

提前致谢!

【问题讨论】:

您解决了这个问题吗?我很好奇你用的是什么。 【参考方案1】:

1) 在 React Native 应用中存储大量数据

Redux-persist 和 SQLite 并不是在移动设备上存储大数据的理想方式。您可以将数据存储在相关操作系统管理的应用程序存储中。您可以使用iOS 上的Documents/Library/Cachestmp 目录以及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 上存储大数据的主要内容,如果未能解决你的问题,请参考以下文章

使用expo的react-native消息队列

React Native 和 Expo - SVG 不会在 iOS 设备上呈现

使用 react-native、Firebase 和 expo 的 signinwithemail 链接错误

如何使用搜索文本输入(expo、react-native)在屏幕上显示项目

使用 react-native (expo) 切换手电筒

React Native - 如何构建 expo react native 应用程序,使其不需要 Expo android 应用程序打开