簡體   English   中英

在數據庫更新時更新客戶端數據

[英]Update client data on database update

我正在使用ReactJS + Relay + GraphQL + MongoDb構建我的第一個SaaS B2C應用程序。 例如,該應用程序將具有以下對象:

  • 用戶
  • 顧客
  • 庫存物品
  • 庫存水平
  • 價格表
  • 營業額
  • 退貨

對於每個對象,我都可以看到其列表(例如:庫存項目列表-StockItem List)以及對象的詳細信息。 可以創建,編輯或刪除對象(CRUD)。

使用REST,我將為每個對象構建一個數據獲取器。 因此,一旦用戶轉到列表Sales,即客戶端將轉到服務器並獲取所有可用的Sales。 如果用戶單擊以對其進行詳細說明,則將進行新的REST調用以獲取此特定的銷售詳細信息,依此類推。

使用GraphQL可以理解,我應該創建一個大型viewer查詢,將所有這些對象和字段連接到應用程序,並使用片段為每個對象訪問它們。

這樣做,我無法理解如果另一個用戶更改某個對象會發生什么,因為所有數據都將在應用程序開始時立即加載。 一旦打開新屏幕后,Relay會重新加載片段,其工作方式與使用REST時一樣嗎? 我應該建立一種更新機制嗎? 如果是這樣,走什么路。

記住我有40多個不同的對象

還是我需要像使用REST一樣為每個對象建立一個查詢?

是的,您需要為每個對象建立一個查詢。

使用帶有Relay的<QueryRenderer />調用查詢。
每次您要批量查詢某些內容時,都會有一個與查詢關聯的<QueryRenderer />

例如,讓我們想象兩個頁面: /users/sales ,它們都是列表。

/users可以在以下位置進行渲染:

<QueryRenderer
  environment={...}
  query={graphql`
    query UsersPageQuery {
      users(first: 10) {
        edges { node {
          ...UsersPage_user
        }}
      }
    }
  `
  // ... others props
/>

/sales可以在某處渲染:

<QueryRenderer
  environment={...}
  query={graphql`
    query SalesPageQuery {
      sales(first: 10) {
        edges { node {
          ...SalesPage_sale
        }}
      }
    }
  `
  // ... others props
/>

不要一次加載所有數據。
一個好主意是每個視圖(例如列表或項目詳細信息視圖)有一個<QueryRenderer /> 與REST相同;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM