【发布时间】:2020-08-05 22:50:56
【问题描述】:
在我的演示应用程序中,我有一个“员工”界面,其中包含以下字段: employee.ts
export interface Employee{
id:string;
firstName:string;
lastName:string;
email:string;
mobileNumber:string;
}
在 UI 中,我显示了添加到 Firebase 数据库中的所有员工。 现在,我想使用员工 ID 更新该员工的特定数据。 edit-employee.component.ts:
import { Component, OnInit } from '@angular/core';
import { Employee } from '../employee';
import { EmployeeService } from '../employee.service';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-edit-employee',
templateUrl: './edit-employee.component.html',
styleUrls: ['./edit-employee.component.css']
})
export class EditEmployeeComponent implements OnInit {
employee:Employee;
id:string;
submitted:boolean=false;
constructor(private employeeService:EmployeeService,
private activeRoute:ActivatedRoute) { }
ngOnInit(): void {
this.activeRoute.params.subscribe(
(data)=>{
this.id=data['id']
}
);
console.log('id::'+this.id);
this.employeeService.getEmployeeById(this.id).subscribe(
(data)=>{
console.log(data);
this.employee=data.map((e)=>{
return{
firstName:e.payload.doc.data()['firstName'],
lastName: e.payload.doc.data()['lastName']
}
})
console.log(this.employee);
}
)
}
onSubmit(){
console.log('submitted');
this.submitted=true;
}
}
employee.service.ts:
getEmployeeById(id:string):Observable<any>{
//return this.firestore.collection('users').doc(id).valueChanges();
return this.firestore.doc('users/'+id).get();
}
【问题讨论】:
-
console.log(data)中的数据类型是什么; ? .. 当然,它不是一个数组,data.map() 失败了。
-
我是否需要为 getEmployeeById() 方法更改服务类中的任何内容。 getEmployeeById(id:string):Observable
{ //return this.firestore.collection('users').doc(id).valueChanges();返回 this.firestore.doc('users/'+id).snapshotChanges(); }
标签: angular firebase-realtime-database