【问题标题】:Error: Property 'doc' does not exist on type 'DatabaseSnapshot<unknown>'错误:“DatabaseSnapshot<unknown>”类型上不存在属性“doc”
【发布时间】:2021-10-25 01:38:25
【问题描述】:

我正在构建一个 angular + firebase 应用程序,并且我有一个服务文件应该从 firebase 实时数据库中获取 members

import { Injectable } from '@angular/core';
import { FormControl, FormGroup } from "@angular/forms";
import { AngularFireDatabase, AngularFireList } from "@angular/fire/database";
import { map } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class MembersService {

  constructor(private db: AngularFireDatabase) { }
  form = new FormGroup({        
    memberName: new FormControl(''),
    memberNumber: new FormControl(''),
    statusOn: new FormControl(false)
})

getMembers() { 

  let initialPayload = this.db.list("/members").snapshotChanges()
.pipe(map(actions => actions.map(a => ({ key: a.payload.doc.id, data: a.payload.doc.data() }) )));
  return initialPayload;
}

但是,我在 getMembers() 方法中遇到错误,如下语句:

key: a.payload.doc.id, data: a.payload.doc.data()

doc 的两个实例中,我都会收到以下错误: “DatabaseSnapshot”类型上不存在属性“doc”。 类型“DatabaseSnapshotExists”.ts(2339) 上不存在属性“doc”

我的包版本是:

"@angular/fire": "^6.1.5"

"firebase": "^8.6.7"

【问题讨论】:

  • 在使用 map 运算符之前尝试在管道中使用 tap() 运算符,以便在调试时查看正在使用的内容:.pipe(tap(a => console.log(a)) , 地图(...))
  • 好吧,我做到了,我的控制台中有一组快照,例如:imgur.com/bWoUfmB 但我不知道从这里做什么

标签: angular firebase firebase-realtime-database


【解决方案1】:

解决了。这可能是因为我依赖于与 Firebase Firestore 相关的代码,而我实际上是在我的项目中使用 Firebase 实时数据库。

我因为doc 而得到的错误通过简单地删除它并使用正确的变量来解决,如下所示:

let initialPayload = this.db.list("/members").snapshotChanges()
.pipe(map(actions => actions.map(a => ({ key: a.payload.key, data: a.payload.val() }) ))) as Observable<any[]>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 2020-04-09
    • 2023-01-10
    • 2021-05-15
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    相关资源
    最近更新 更多