2016-08-27 46 views
1

Meteor-JS支持离线存储/缓存吗?Meteor-JS支持离线存储/缓存吗?

从我读什么:https://guide.meteor.com/collections.html

相反,在客户端上,一个集合是 数据库的客户端缓存。这要归功于Minimongo库 - 一个 内存中的所有JS,实现了MongoDB API。

内存部分似乎无效脱机工作。我错了吗?

编辑:通过“离线”我的意思是尽可能多的那些特质:

  • 负载的应用,即使没有互联网连接,显示用户的数据
  • 使离线编辑,后来它们同步,即使离线为例如小时
  • 加载应用程序时,在离线状态下还未同步编辑也应该显示

EDIT2:我想在适当的期限将是离线第一

回答

1

对于关于Minimongo的“内存中”部分的担忧,您是对的。但是在离线设备上,这并不像看起来那么糟糕:只要应用程序保存在内存中(即,如果通过浏览器打开,则坐在标签中,或者如果打开Cordova打包的应用程序,则不会强制关闭),你的Minimongo生活并保留你的数据。

但是,如果浏览器选项卡被关闭,或者Cordova应用程序带出设备内存(即用户强制它通过任务切换器/应用程序管理器关闭,或者Android缺少RAM并查找未使用的应用程序以关闭这也意味着回到主屏幕将您的应用程序保存在内存中),那么您的Minimongo(及其数据)就会消失。

但也有一些软件包可以处理该用例。请参阅How can Meteor apps work offline?

1

此功能不适用于” t从盒子里出来。即使您对客户端进行了更改,它们也会反映到客户端中,但一旦与服务器的连接建立,服务器数据将会覆盖更改。

您将不得不手动推送数据。这样做的一种方式是使用浏览器的本地存储。您可以将数据保存在本地存储中,并在连接建立后将其推入服务器,以使更改“永久”。

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

+0

如果通过“Meteor.call”进行更改,实际上它们将反映在客户端(乐观UI)中,但实际上客户端也会[继续尝试](https://guide.meteor。 com/methods.html#retries)将方法调用发送到服务器,直到它成功或应用程序关闭(并从Cordova的设备中取出内存)。 – ghybs

+0

当用户关闭标签并且输入的数据将丢失时,它将停止尝试。 – Ankit

+0

OP的观点听起来更像混合应用程序,而不是通过浏览器访问。与浏览器选项卡相比,混合应用程序更少出现在设备内存中。 – ghybs