React Native 应用离线情况下如何存储数据?

3

我目前正在创建一个React Native应用程序,需要用户能够离线存储数据,然后只有在同步到数据库之前才会进行一次同步。我听说过PouchDB,但不太了解如何实现它,因此建议可能是一个解决方案。

由于这是我第一次创建完整的React Native应用程序,我不确定要使用哪些服务。我有使用React JS、Express和Sequelize的经验,但我不认为我可以在React Native应用程序中使用Sequelize。

我想使用NoSql或MySQL数据库,不过我对两者都持开放态度。

如果有关于使用哪些服务、语言、指南、视频的任何建议,将非常感慕,因为我已经卡住很长时间了。


这可能会有所帮助,https://dev59.com/mKrka4cB1Zd3GeqPjMk1 - KalC
3个回答

2
我知道这个问题是一年前提出的,但当我为自己的应用研究离线数据库解决方案时,我发现了这个问题。
这里有一个回答推荐使用Firebase,它完美地符合你的问题标准,但我会“谨慎使用”。Firebase非常适合在线存储,并具有离线存储功能,但并不适用于长期的离线存储解决方案。我只是加了这个警告,因为你说过“只有一次,它将同步到数据库”。以下是我在Firebase上找到的一些资源:
- 作为仅离线解决方案使用,Firebase随着时间的推移变得越来越慢,因为它使用缓存而不是实际存储 - Firebase离线缓存的官方文档 我将使用MMKV,这是一款由微信开发的离线存储库。我在查看离线存储解决方案列表以及AsyncStorage(现已停用)时发现了它。
希望这个回答能够帮助像我这样的人决定使用哪种存储解决方案!编辑:该库不适用于Expo。

2
您可以使用Firebase的一部分Cloud Firestore进行翻译。它是一个NoSQL、离线优先的数据库,可以按照您所描述的方式工作,并且在React Native中使用非常容易。
文档:https://rnfirebase.io/firestore/usage

嗨,Ewan,感谢你的回答!只是确认一下,我的应用程序需要用户输入数据,有时他们可能处于没有WiFi的位置。Firestore是否会将数据本地保存在设备上? - Jim
没问题,它使用离线缓存的数据库版本,允许你进行读写等操作,一旦连接恢复,就会同步所有内容。有关此功能的更多详细信息,请参阅:https://firebase.google.com/docs/firestore/manage-data/enable-offline - Ewan

2
您可以使用redux-persist。它允许您将数据存储在键值对中。这是我用于离线存储数据并在需要时同步到数据库的方法。
在使用react-redux时,它非常方便。您可以将reducers列入黑名单或白名单,以仅持久化特定reducers的数据。
以下是一些有用的链接:
  1. NPM链接
  2. 更多关于redux persist的信息
  3. 设置

这是正确的,你可以结合redux和redux-persist来轻松地持久化离线数据。个人尝试将其与Django后端结合使用以创建一个离线优先数据库,但发现相当困难,这就是为什么我选择使用Firebase作为预制解决方案的原因,但如果你不需要在线数据库,只想在设备上本地存储数据,那么这将更加简单明了。 - Ewan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接