Meteor-JS 是否支持离线 storage/cache?

Does Meteor-JS support offline storage/cache?

Meteor-JS 是否支持离线storage/cache?

根据我正在阅读的内容:https://guide.meteor.com/collections.html :

Instead, on the client, a collection is a client side cache of the database. This is achieved thanks to the Minimongo library—an in-memory, all JS, implementation of the MongoDB API.

内存部分似乎否定了离线工作。我错了吗?

编辑:"offline" 我的意思是尽可能多地具备这些品质:

EDIT2:我猜正确的术语应该是离线优先

此功能并非开箱即用。即使您对客户端进行了更改,它们也会反映在客户端中,但是一旦与服务器建立连接,服务器数据就会覆盖更改。

您将不得不手动推送数据。一种方法是使用浏览器的本地存储。您可以将数据保存在本地存储中,并在建立连接后将其推送到服务器以进行更改 'permanent'.

正如评论中指出的那样:Meteor 将尝试继续调用该方法,直到使用 Meteor.call 重新建立连接,但是一旦关闭选项卡,客户端中的数据就会丢失。因此,确保数据在选项卡关闭后仍然存在,将其存储在本地存储中。

您对 Minimongo 的 "in-memory" 部分的担忧是正确的。但是在离线设备上,这并没有看起来那么糟糕:只要应用程序保存在内存中(即如果通过浏览器打开则位于选项卡中,或者如果作为 Cordova 打包应用程序打开则不会强制关闭),您的 Minimongo 存在并保留您的数据。

但是,如果浏览器选项卡被关闭,或者 Cordova 应用程序从设备内存中取出(即用户通过任务切换器/应用程序管理器强制它关闭,或者 Android 内存不足并且查找未使用的应用程序以关闭。这也意味着只需返回主屏幕即可将您的应用程序保留在内存中),然后您的 Minimongo(及其数据)就会消失。

但是也有一些包可以处理该用例。参见 How can Meteor apps work offline?