更新订阅更多而不是数组中的单个哈希



如何更新单个哈希。当我尝试更改哈希中的值时,它不会改变。由于哈希是只读的,但是当我在数组中这样做时,它可以工作。在当前情况下,我只有哈希。

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
},
}
)

在第一个代码中,您正在改变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;
},
})