【发布时间】:2020-12-05 20:00:48
【问题描述】:
从服务器获取结果时,通常我会在我的 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-inmemory,但在尝试执行上述操作时出现错误: TypeError: 无法添加属性 fullName,对象不可扩展
我意识到我可以制作对象的深层副本并且可以解决,但为什么会发生这种变化?有没有办法让 Apollo 像以前一样返回一个可扩展的对象?我的代码中有很多查询的用法,并且在几乎所有查询中,我都向结果中添加了像上面这样的字段,所以这将是一个相当大的代码更改。另外,深拷贝会有轻微的性能问题。
谢谢!
【问题讨论】:
标签: apollo-client apollo-angular