[英]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.