2016-07-28 116 views
0

讓我先說我有這個問題的解決方案,但我很想知道是否有更好的方法,以及我是否在做有問題。返回空數組時返回一個http查詢的技術

我有一個Web應用程序前端的對象表,我需要異步加載對象的一些數據,因爲它是基於每個對象的需要。服務器返回一個包含該對象數據的JSON數組,並且數據包含該對象的鍵,所以我可以使用其數據更新前端對象。當沒有數據時,我只是得到一個空數組,因爲我沒有密鑰來更新它,所以不幸的是沒有辦法更新對象。這可能會在稍後導致另一個查詢,這是浪費時間/資源。我無法修改服務器,有沒有辦法很好地做到這一點?

我目前的解決方案是在發送請求之前將對象的數據設置爲空數組,然後只在結果爲非空時更新結果。

我想知道是否有更好/更習慣的方式來做到這一點。

僅供參考,我使用Elm和PostgREST作爲後端。

回答

2

您可以使用咖喱和部分功能應用程序來指示應該更新哪個對象ID。

我假設你有類似這樣的代碼:

type Msg 
    = ... 
    | FetchData Int 
    | DataFetched [Data] 
    | DataFetchFail Http.Error 

-- inside the update function 
update msg model = 
    case msg of 
    ... 
    FetchData id = 
     model ! [ Task.perform DataFetchFail DataFetched (Http.post ...) ] 

如果你定義DataFetched構造爲包括ID作爲第一個參數,您可以使用部分應用程序,以包括ID將來查找,而不管服務器返回什麼。

下面是相同的代碼塊有這樣的想法:

type Msg 
    = ... 
    | FetchData Int 
    | DataFetched Int [Data] 
    | DataFetchFail Http.Error 

-- inside the update function 
update msg model = 
    case msg of 
    ... 
    FetchData id = 
     model ! [ Task.perform DataFetchFail (DataFetched id) (Http.post ...) ] 

您也可以在ID添加到失敗消息的更細粒度的錯誤消息。

+0

好的電話,應該想到了!我會更新並接受。 – jgon