我即将开始研究移动应用的后端(最初是iOS / Android,后来也是网站),我在想是否Realm能够满足我的所有需求。
基本思想是有两种类型的用户 - 客户和服务提供商。客户偶尔会向服务器发送请求,并为将来可能发生的与此请求相关的任何事件订阅(实时)。每个服务提供商都在监听来自所有客户的特定请求,并且是那些将为每个请求触发各种事件(发送数据)的人。
从Realm文档中可以看出,实时数据同步不会成为问题。我关心的是如何在领域'世界'中建模场景(客户/服务提供商)。根据我的阅读,每个用户最好有一个领域。因此,我想用户将注册并将获得一个领域。然后每当他提出请求时,它就会被存储在他的领域中。现在问题是如何为服务提供者建模。将会有各种服务提供商对不同类型的请求进行响应(在请求后最多一小时内触发各种事件)。 (每个用户都可以发送任何请求,因此可以由任何服务提供商提供服务。)
我读到一点,Realm支持不同领域之间的数据共享,这可能是这个问题的部分解决方案,但是我无法找到这种“共享”是否只能共享特定请求。 (这意味着每个服务提供商只会获得针对他的请求。)
我的问题是这种情况是否可以使用Realm?
答案 0 :(得分:3)
这听起来非常适合Realm的服务器端event-handling。简而言之,Realm通过我们的Node SDK提供了监听服务器上Realms的变化的能力。
因此,在您的示例中,每个移动用户都拥有自己的Realm,其中的URL将为/~/myRealm
,其中代字号表示Realm用户ID。 Node SDK事件处理API允许您注册一个JS函数,该函数将运行以响应Realm URL的Regex模式所代表的更改。在这种情况下,您可以使用:^/([0-9a-f]+)/myRealm
,以便任何用户myRealm
更新时,服务器都可以执行某些逻辑。
通过这种方式,服务器通过Node SDK实际上是一个超级用户"或者描述的服务提供商。触发事件时,运行的JS函数将提供已更新的Realm以及与Realm中已插入,删除或修改的对象相关的索引列表。然后,您可以在JS中执行任何逻辑,例如使用更改的数据调用另一个API或打开相关Realm或任何其他API,并编写将被推送回相应客户端的更改。
完整的服务器端事件处理是Realm Professional Edition的一部分,但我们最近发布了另一种与此名为Realm Functions的交互方式。这提供了通过服务器仪表板创建相同JS函数的能力,这些函数将响应跨Realms的更改而运行。开发人员版本支持3个功能,因此您可以立即尝试!