嗨,我正试图在firebase中得到一个文档,但是它给了我一个错误。
属性‘on’在“可观察”类型上不存在。
我跟踪了firebase https://firebase.google.com/docs/firestore/query-data/get-data上的文档
我的service.ts代码是
import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';
@Injectable({
providedIn: 'root'
})
export class ViewReportService {
constructor(private firestore: AngularFirestore) { }
getPassengerReport(myDocument) {
const passengerRef = this.firestore.collection("newPassenger").doc(myDocument);
const data = passengerRef.get().then(function (doc) {
console.log("Cached document data:", doc.data());
}).catch(function (error) {
console.log("Error getting cached document:", error);
});
return data
}
}角分量码
passengerData = this.service.getPassengerReport(passengerDocumentID);
console.log(passengerData)
}发布于 2020-11-14 16:20:55
你需要考虑的是你在使用角度。角的最佳实践之一是使用Observable而不是承诺
让我们将函数转换为返回Obervable
import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';
@Injectable({
providedIn: 'root'
})
export class ViewReportService {
constructor(private firestore: AngularFirestore) { }
getPassengerReport = (myDocument) =>
this.firestore.collection("newPassenger").doc(myDocument).get()
}在上面,我们将getPassengerReport定义为一个函数,它使用ES6语法返回行ES6。
在组件文件中,可以拥有
passengerData$ = this.service.getPassengerReport(passengerDocumentID);在其中,您可以用
<ng-container *ngIf='passengerData$ | async as passengerData'>
<!-- HTML CODE HERE -->
</ng-container>我们使用异步管道订阅Observable。
https://stackoverflow.com/questions/64835149
复制相似问题