【问题标题】:Firestore to get single data from angularFirestore从角度获取单个数据
【发布时间】:2019-04-15 23:14:45
【问题描述】:

我是角度方面的新手。请帮我从firestore获取单个数据。我正在从数据库中获取完整数据,但我需要从数据库中获取特定数据。 这是我获取完整数据的角度代码。我提到了两个代码文件,第一个是服务,另一个是显示代码。

service.ts

import { Injectable } from '@angular/core';
import { AngularFirestore,AngularFirestoreDocument,AngularFirestoreCollection } from '@angular/fire/firestore';
import { User } from '../models/user';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class RegisterService {
  private registerCollection : AngularFirestoreCollection<User>;
  private  resgisters : Observable<User[]>;
  private registerDocu : AngularFirestoreDocument<User>;

  constructor(public db : AngularFirestore) {
    this.registerCollection = db.collection<User>('Register');
    this.resgisters = db.collection('Register').valueChanges();

    this.resgisters = this.registerCollection.snapshotChanges().pipe(
      map(actions => {
        return actions.map(a => {
          const data = a.payload.doc.data();
          const id = a.payload.doc.id;
          return { id, ...data };
        });
      })
    );
    }
    addRegister(user: User) {
       this.registerCollection.add(user);
    }
    getRegister(){
      return this.resgisters;
    }

}

Profile.page.ts

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { AuthService } from '../../../services/auth.service';
import { LoggingService } from '../../../services/logging.service';
import { RegisterService } from '../../../services/register.service';
import { User } from '../../../models/user';

import * as firebase from 'firebase/app';

@Component({
  selector: 'app-profile',
  templateUrl: './profile.page.html',
  styleUrls: ['./profile.page.scss'],
})
export class ProfilePage implements OnInit {
  user : User[];

  constructor(private registerservice : RegisterService,private loggingService: LoggingService, private activatedRoute: ActivatedRoute, private authService: AuthService) { }

  ngOnInit() {
    this.registerservice.getRegister().subscribe(register => {
       this.user = register;
       console.log(this.user);
    });      
  } 
}

【问题讨论】:

标签: angular typescript google-cloud-firestore ionic4


【解决方案1】:

为了从 Firestore 数据库中获取单个对象,您需要查询一个文档。根据您的代码结构,getRegister() 方法应该是:

getRegister(node) {
   return this.db.Doc<User>('Register/' + node).valueChanges();
}

您可以在库 github 页面上找到文档:https://github.com/angular/angularfire2/blob/master/docs/firestore/documents.md

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2018-11-06
    相关资源
    最近更新 更多