【发布时间】:2018-10-20 09:08:00
【问题描述】:
我在尝试使用 snapshotChanges() 从 firebase 获取数据时遇到 changes.forEach 错误,但如果我使用 valuechanges(),它工作正常。我不确定我做错了什么,所以请帮忙
import { Injectable } from '@angular/core';
import { AngularFirestore, AngularFirestoreCollection,
AngularFirestoreDocument } from "angularfire2/firestore";
import { BehaviorSubject } from "rxjs/BehaviorSubject";
import { of } from "rxjs/Observable/of";
import {Observable} from 'rxjs';
import 'rxjs/add/operator/map';
import { Employee } from "../models/employee";`
@Injectable()
export class EmployeeService {
employees: Observable<Employee[]>;
employeeCollection: AngularFirestoreCollection;`
constructor( public db: AngularFirestore ) {
db.firestore.settings({ timestampsInSnapshots: true });
this.employeeCollection = this.db.collection('employee');
this.employees = this.employeeCollection.snapshotChanges().map(changes => {
return changes.map(a => {
const data = a.payload.doc.data() as Employee;
data.id = a.payload.doc.id;
return data;
});
});
}
getEmployees(){
return this.employees;
}
这是我的组件
import { Component, OnInit } from '@angular/core';
import { EmployeeService } from "../../services/employee.service";
import { Employee } from "../../models/employee";
@component({
selector: 'app-employees',
templateUrl: './employees.component.html',
styleUrls: ['./employees.component.css']
})
export class EmployeesComponent implements OnInit {
employees: Employee[];
constructor(
private employeeService: EmployeeService
) { }`
ngOnInit() {
this.employeeService.getEmployees().subscribe(employees => {
this.employees = employees;
});`
然后我在我的 chrome 控制台上收到此错误
【问题讨论】:
-
您可以尝试删除此导入
rxjs/add/operator/map';。你不应该需要它。
标签: angular firebase rxjs google-cloud-firestore angularfire2