如何解决使用 Angular 在 Firebase 的云 Firestore 上使用 get 函数时得到未定义的结果
我对 Angular 还很陌生。我正在尝试使用 get 函数返回 firebase 中云 Firestore 数据库中的数据。我得到的响应是不确定的,尽管如下图所示,那里肯定有数据。我想问题可能是我在组件中的订阅功能。我尝试了很多不同的方法,但都行不通。
这是我的代码: 服务中
constructor(private afs: AngularFirestore,private aff: AngularFireFunctions) {}
getConfigurations() {
return this.afs.collection<Configuration>('configurations').valueChanges() }
在我的 ts 文件中
import { Component,OnInit,ChangeDetectionStrategy } from '@angular/core';
import {AngularFirestore,AngularFirestoreCollection} from "@angular/fire/firestore";
import {AngularFireFunctions} from "@angular/fire/functions";
import {Configuration} from "../../dashboard/dashboard.service";
import {DashboardService} from "../../dashboard/dashboard.service";
@Component({
templateUrl: './vaccine-codes.component.html',styleUrls: ['./vaccine-codes.component.scss'],changeDetection: ChangeDetectionStrategy.OnPush
})
export class VaccineCodesComponent implements OnInit {
configurations$: Configuration[];
constructor(private dashboardService: DashboardService) {
}
// configurations$ = this.dashboardService.getConfigurations()
getConfigurations() {
this.dashboardService
.getConfigurations()
.subscribe(res => (this.configurations$ = res)
);
console.log(this.configurations$);
}
ngOnInit(): void {
this.getConfigurations();
}
}
这些是我的类/接口:
export interface Configuration {
ChpPrefix: string;
Vaccines: { [key: string]: Vaccine[] };
description: string;
}
export interface Vaccine {
Codes: string[] | null;
}
解决方法
您的 getConfigurations
异步获取数据。当您在函数之后调用 console.log(this.configurations$)
时,仍然没有收到数据。
您必须检查 subscribe
内的响应。
configurations$: Configuration[];
getConfigurations = () =>
this.dashboardService
.getConfigurations()
.subscribe(res => {
this.configurations$ = res;
console.log(this.configurations$);
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。