2017-08-10 2 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; 
    } 

    }, 
    } 
) 

しかし、このコードで、それはあなたがpreviousResult.propertyを変異され、第2に、あなたが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

に動作します。

は、私はそれはあなたが行う場合は動作すると思います

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; 
    }, 
}) 
関連する問題