【发布时间】: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