Firebase Angular:如何检索和显示数据?

Firebase Angular:如何检索和显示数据?,angular,firebase,Angular,Firebase,在我的火力基地。我为我的用户提供了以下数据库: 我使用此服务来管理我的用户: import { Injectable } from '@angular/core'; import {User} from '../models/user.model'; import {Subject} from 'rxjs/Subject'; import * as firebase from 'firebase'; @Injectable({ providedIn: 'root' }) export c

在我的火力基地。我为我的用户提供了以下数据库:

我使用此服务来管理我的用户:

import { Injectable } from '@angular/core';
import {User} from '../models/user.model';
import {Subject} from 'rxjs/Subject';
import * as firebase from 'firebase';

@Injectable({
  providedIn: 'root'
})
export class UsersService {

  users: User[] = [];
  usersSubject = new Subject<User[]>();

  constructor() { }

  emitUsers(){
    this.usersSubject.next(this.users);
  }

  saveUsers(){
    firebase.database().ref('/users').push(this.users);
  }

  getUsers(){
    firebase.database().ref('/users')
    .on('value',(data)=>{
      this.users = data.val() ? data.val() : [];
      this.emitUsers();

    });
  }

  getSingleUser(id:number){
    return new Promise(
      (resolve,reject) =>{
        firebase.database().ref('/users/'+id).once('value').then(
          (data) =>{
            resolve(data.val());
          }, (error) => {
            reject (error);
          }
        );
      }
    );
  }

  createNewProfile(newUser:User){
    this.users.push(newUser);
    this.saveUsers();
    this.emitUsers();
  }

  removeUser(user:User){
    const userIndexToRemove=this.users.findIndex(
      (userEl)=>{
        if(userEl==user){
          return true;
        }
      }
    );
    this.users.splice(userIndexToRemove,1);
    this.saveUsers();
    this.emitUsers();
  }

}
还有我的html

<div class="row">
  <div class="col-xs-12">
    <h2>Users</h2>
    <div class="list-group"
        *ngFor="let user of users | keyvalue async">
        <p> Hello {{user.firstName}}</p>
    </div>
  </div>
</div>

使用者
你好{{user.firstName}

我不知道为什么,但我的数据库中有2个用户,我的输出只是: “你好” “你好” 名字没有写出来 你知道为什么吗


非常感谢

您似乎在通过
keyvalue
管道传递用户,而不使用其输出


在HTML中,尝试将
user.firstName
替换为
user.value.firstName

当我使用set()方法而不是push()来保存数据时,这里是数据库

当我使用:

  saveUsers(){
    firebase.database().ref('/users').set(this.users);
  }
而不是

  saveUsers(){
    firebase.database().ref('/users').push(this.users);
  }

在这种情况下,它起作用了。我的输出是Hello Ibra和Hello Pires。但我在这种情况下的问题是,我没有push的唯一id。

谢谢,但它不起作用。我用更多的信息回复我自己的帖子。当我使用set()方法保存数据时,它工作正常(因为数据库的结构不同)。但是由于push()方法,我希望获得唯一的ID。
  saveUsers(){
    firebase.database().ref('/users').push(this.users);
  }