2

我正在尝试从 quickbase 中的表中检索值。 quickbase 表的图像

这就是我到目前为止所拥有的...... service.ts

    public getNativeFields(){
        let headers = new HttpHeaders().set("QB-Realm-Hostname", "xxxxxx.quickbase.com").set("Authorization", "QB-USER-TOKEN xxxxxx_xxx_xxxxxxxxxxxxxxxxxxxxxxxxx");
    
        let requestBody = {
          "from": this.someTableTableId,
          "select": [6,7]
        }
        return this.httpClient.post(`${this.apiURL}/records/query?appId=${this.appId}`, requestBody, { headers })
 
    }

在我的component.ts我有...

    ngOnInit(): void {
        let list= this.apiService.getNativeFields();
        console.log("list is" );
        console.log(list);
        list.forEach(element=>{
          this.nativeVersions.push(element);
        })
        console.log("native versions");
        console.log(this.nativeVersions);
      }

此日志返回

登录到控制台的对象数组的图像

如何提取 {value:"1.0.0"} 和 {value:"1.0.5"}

4

1 回答 1

0

尝试动态生成字段,这样您就不必担心哪个索引version用于notes

从对象,我们可以看到我们有

[
  {
     data: [...],
     fields: [...]
  }
]

字段定义了数据结构的方式,因此我们可以通过map运算符生成更简单的对象。见下面的代码

  constructor(private apiService: ApiService) {}
  list$ = this.apiService.getNativeFields();
  allVersions$ = this.list$.pipe(
    map(list =>
      (list.map(({ fields, data }) =>
        data.map(item =>
          fields.reduce((prev, next) => {
            return { ...prev, [next.label]: item[next.id]["value"] };
          }, {})
        )
      ) as any).flat()
    ),
    map(item => item.map(({ version }) => version))
  );
  ngOnInit() {
    this.allVersions$.subscribe({
      next: items => console.log(items)
    });
  }

在 stackblitz 上查看这个演示

NB .flat()功能仅在es2019. 这篇文章将有助于解决任何挑战Typescript flatMap, flat, flatten 在类型 any[] 上不存在

于 2020-10-28T18:20:20.703 回答