Meteor-JS是否支持离线存储/缓存?
从我正在阅读的内容:https://guide.meteor.com/collections.html:
相反,在客户端上,集合是客户端缓存 数据库。这是通过Minimongo库实现的 内存中,所有JS,MongoDB API的实现。
内存部分似乎否定脱机工作。我错了吗?
编辑:离线"离线"我的意思是尽可能多的这些品质:
EDIT2:我猜正确的术语是离线优先
答案 0 :(得分:1)
此功能不是开箱即用的。即使您对客户端进行了更改,它们也会反映在客户端中,但是一旦建立与服务器的连接,服务器数据将覆盖更改。
您必须手动推送数据。一种方法是使用浏览器的本地存储。您可以将数据保存在本地存储中,并在建立连接后将其推送到服务器中,以使更改永久保留。
正如评论中所指出的:Meteor将尝试继续调用该方法,直到重新建立连接使用Meteor.call
,但是一旦关闭选项卡,客户端中的数据将会丢失。因此,确保数据在关闭选项卡后仍然存在,并将其存储在本地存储中。
答案 1 :(得分:1)
你对Minimongo的“记忆中”部分表示担忧是正确的。但是在离线设备上,这并不像它看起来那么糟糕:只要应用程序保存在内存中(例如,如果通过浏览器打开就位于标签中,或者如果作为Cordova打包应用程序打开则不强行关闭),您的Minimongo生活并保留您的数据。
但是,如果关闭浏览器选项卡,或者Cordova应用程序带出设备内存(即用户强制它通过任务切换器/应用程序管理器关闭,或者Android缺少RAM并查找未使用的应用程序关闭这也意味着只需返回主屏幕就可以将你的应用程序保存在内存中,然后你的Minimongo(及其数据)就会消失。
但是也有一些软件包可以处理这个用例。见How can Meteor apps work offline?