GraphQL订阅:如何根据订阅中的事件更新对象

时间:2017-03-18 02:45:00

标签: angular graphql apollo-client graphql-subscriptions

我正在尝试更新用户'我在事件发布到PasswordUpdated频道时检索过的密码。这是我到目前为止所尝试的,

this.apollo.subscribe({
  query: this.passwordUpdatedSubscription
}).subscribe(({passwordUpdated}:any) => {
  this.userDataQuery.updateQuery((previousResult) => {
    previousResult.getUsers.filter(user => user.name === passwordUpdated.name).forEach(user => user.password = passwordUpdated.password);
  });

});

但是,我刚从控制台中的错误中发现previousResult是不可变的。当我尝试更新previousResult中的密码时,该媒体资源为writable: false。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您必须返回更改的先前结果。查看subscription docu了解apollo客户端。下面是更新查询的点。

您可能需要查看reacts immutability helper,其中解释了问题所在。