2017-08-10 55 views
0

如何更新單哈希。當我嘗試改變散列值時,它不會改變。由於哈希是隻讀的,但是當我在數組中時它有效。我只在當前情況下散列。更新SubscribeToMore中的單哈希而不是數組

subscribeToMore(
    { 
    document: postUpdated, 
    updateQuery: (previousResult, { subscriptionData }) => { 

    if (subscriptionData.data.postUpdated) { 

     console.log("------Updated hash------",subscriptionData.data.postUpdated);  

     previousResult.property.water_heater = subscriptionData.data.postUpdated.water_heater; 

    // readonly unable to assign 

    return subscriptionData; 
    }else{ 
    return previousResult; 
    } 

    }, 
    } 
) 

但有了這個代碼,它的工作原理

subscribeToMore(
    { 
     document: postUpdated, 
     updateQuery: (previousResult, { subscriptionData }) => { 
     previousResult.posts = previousResult.posts.map((post) => { 
      if(post._id === subscriptionData.data.postUpdated._id) { 
      return subscriptionData.data.postUpdated 
      } else { 
      return post 
      } 
     }) 
     return previousResult 
     }, 
    } 
) 

回答

0

您是變異previousResult.property和第二你是變異previousResult的第一個代碼。

我認爲它會工作,如果你做

subscribeToMore({ 
    document: postUpdated, 
    updateQuery: (previousResult, { subscriptionData }) => { 
    if (subscriptionData.data.postUpdated) { 
     console.log("------Updated hash------", subscriptionData.data.postUpdated);  

     previousResult.property = { 
     ...previousResult.property, 
     water_heater = subscriptionData.data.postUpdated.water_heater; 
     } 
    } 
    return previousResult; 
    }, 
})