2017-06-13 75 views
1

我即將開始在移動應用程序的後端工作(最初是iOS/Android,後來也是網站),我正在考慮Realm能否滿足我所有的需求。共享領域之間的特定數據

其基本思想是有兩種類型的用戶 - 客戶和服務提供商。客戶偶爾會向服務器發送請求,並針對將來與此請求相關的任何事件訂閱(實時)。每個服務提供者都在監聽來自所有客戶的特定請求,並且正在爲每個請求觸發各種事件(發送數據)。

從Realm文檔中可以看出,實時數據同步不會成爲問題。我關心的是如何在Realm'世界'中對場景(客戶/服務提供商)進行建模。根據我所讀的內容,每個用戶最好有一個領域。因此,我想用戶將會註冊並獲得一個領域。然後,每當他提出請求時,就會將其存儲在他的領域。現在的問題是如何建模服務提供者。將會有各種各樣的服務提供商響應不同類型的請求(響應請求後觸發各種不同的事件)。 (每個用戶可以發送任何請求,因此可以由任何服務提供商提供服務。)

我讀了一點關於Realm支持不同領域之間的數據共享,這可能是此問題的部分解決方案,但是我無法找出這個「分享」是否只能分享特定的請求。 (意思是每個服務提供者只會得到專門爲他準備的請求。)

我的問題是這種情況是否可以使用Realm來實現?

回答

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或其他任何其他文件,並寫入更改,這些更改將被推回給各個客戶端。

完整的服務器端事件處理是Realm專業版的一部分,但我們最近發佈了另一種與名爲Realm Functions的交互方式。這提供了通過服務器的儀表板創建相同的JS函數的能力,該函數將響應跨域的變化而運行。開發者版本支持3個功能,所以你可以立即嘗試!

+0

如果我理解正確的話,我會連接所有領域的任何變化,找出哪個服務提供者應該接收這個事件,然後將其插入它的領域,所以領域'引擎'將通知所有連接的客戶端這個領域(在現實時間)。我唯一擔心的是數據重複,因爲記錄將同時存儲在兩個區域中,但我想我們無法繞過這個......(沒有什麼比創建僅指向行的指針作爲在領域之間共享數據的手段,數據實際上是重複的,對嗎?) – user3559787

+0

現在數據將需要在Realm中重複使用,但是我們將來會計劃提供支持,將同一個Realm數據子集同步到客戶端,以便您可以添加鏈接或調整屬性以使其適合該子集發送給特定的一組客戶端。 –