在尝试升级到Apollo客户端2后尝试添加字段以生成gql数据对象时,获取“对象不可扩展”

问题描述

从服务器获取结果时,通常我会在Apollo Angular客户端的对象中添加额外的字段,以方便日后使用,例如:

this.apollo.watchQuery<any>({query: gql`...`})
.valueChanges.pipe(
  map(result => {
    result.data.sites.forEach(s => {
      s.fullName = `${s.parent.displayName} - {s.displayName}`;
    }
    return result;
});

这过去在Apollo客户端1上可以正常工作。现在,我将代码升级到Apollo客户端2和最新的apollo-cache-memory,尝试执行上述操作时出现错误: TypeError:无法添加属性fullName,对象不可扩展

我意识到我可以复制对象的深层副本,并且可以解决问题,但是为什么会有这种变化?有没有办法使Apollo返回像以前一样的可扩展对象?我在代码中使用了很多查询,在几乎所有查询中,我都向上述结果中添加字段,因此这将是一个相当大的代码更改。此外,深层复制将有一个轻微的性能问题。

谢谢!

解决方法

请勿更改结果,只需以不变的方式更新fullName

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...