从可观察对象返回的复杂对象中访问数据

Posted

技术标签:

【中文标题】从可观察对象返回的复杂对象中访问数据【英文标题】:Accessing data from a complex object that is returned by an observable 【发布时间】:2020-03-21 00:08:08 【问题描述】:

我有一个 Angular 客户端,它从可观察对象中获取数据(通过 apollo.watchQuery())。

当我记录从 observable 返回的数据时,它的结构恰好是这样的: console.log() output

如何从主“用户”对象访问这些“用户”对象中的每一个?

这就是我最初获取和记录数据的方式:fetching_users

【问题讨论】:

嗨,对不起,我不太明白你的问题:你为什么不遍历你的用户数组?像 res.data.users.map(user => //any treatment here) 之类的东西?或者只是一个愚蠢的(res.data.users的const用户)//这里的任何处理? 感谢@millenion,但是当我尝试访问 res.data.users 时,它说:“错误 TS2339:属性 'users' 在类型 '' 上不存在。”。否则很容易。 【参考方案1】:

您可以使用角度函数 forEach 访问每个用户对象,在您的情况下,它将是这样的

this.apollo.watchQuery<any>(...).valueChanges.subscribe(
  res=> //res here is Users
    res.forEach(
    user=>
    console.log(user.name);
  
)

【讨论】:

我认为这肯定可以工作@kenny-samuel,但它会抛出一个错误:“错误 TS2339:'ApolloQueryResult' 类型上不存在属性 'forEach'”。那是什么意思?我是否在迭代未定义的内容? 已解决! Apollo 方法应称为 apollo.watchQuery&lt;any&gt;(..); 而不仅仅是 apollo.watchQuery(..); 很好,我也会更新我的答案以供将来参考 非常有用的资源如果你有同样的问题:[Apollo Docs] (apollographql.com/docs/angular/basics/queries)

以上是关于从可观察对象返回的复杂对象中访问数据的主要内容,如果未能解决你的问题,请参考以下文章

从可观察到的返回数据的角度 forEach 循环(Firebase 驱动)

使用异步管道从可观察对象中读取对象字段

无法从可观察对象中提取数据

当其他可观察对象为真时,从可观察对象中获取项目

只要基于前一个元素的条件为真,“Pythonic”方式就可以从可迭代对象中返回元素

Java Atmosphere Jersey 从可广播返回 JSON 对象