【问题标题】:In ionic, I want get the firestore doc id在 ionic 中,我想获取 firestore doc id
【发布时间】:2019-11-25 06:09:16
【问题描述】:

在 ionic 中,我想获取 firestore 文档 ID 以显示登录用户的存储信息。我将文档名称设置为用户的电子邮件,例如 Collection[name] = 用户 文档[名称] = user@zzzz.zz

这是我在 auth.ts

中设置文档名称的方法
import * as firebase from 'firebase/app';
import { AngularFirestore } from '@angular/fire/firestore';

constructor(private firestore: AngularFirestore) {}

registerUser(value){

    firebase.auth().createUserWithEmailAndPassword(value.email, value.password)

    this.firestore.doc(`users/${value.email}`).set({
      email: value.email,
    })
    this.router.navigate(['home']);
   }

在 home.ts 中

export class HomePage {

  usersCollection: AngularFirestoreCollection<any>
  users: Observable<any[]>;

ngOnInit() {
     this.usersCollection.doc(How do I get the user's email which is stored as 
     document name here)
}

在 home.html 中

<div *ngFor="let item of info">
<h1>{{item.Name}}</h1>
</div>

我试过了,当然没用

this.usersCollection.doc(`${this.auth.user}`).ref.get()

如何获取和添加用户的文档名称,这是他们登录的电子邮件地址

【问题讨论】:

  • 我强烈建议不要使用电子邮件地址作为文档 ID。使用 created used 的 UID 更容易,因为该字符串始终是有效的文档 ID。
  • @DougStevenson 感谢您的建议
  • 但是如何获取 uid @DougStevenson

标签: angular firebase ionic-framework google-cloud-firestore ionic4


【解决方案1】:

进口:

import * as firebase from 'firebase/app';

获取当前用户:

 var result=  firebase.auth().currentUser; //add .uid if you want

Current user Info

要让当前用户登录,您可以将他的电子邮件存储在存储空间中,然后在调用您的服务后像这样:

getUserById(id) {
  return new Promise((resolve, reject) => {
   this.usersCollection.doc<User>(id).valueChanges().subscribe((value:User)=> {
     value.id=id;
      resolve(value)
    });
  });
}

id 是您存储中的电子邮件。

【讨论】:

  • 但是我如何使用这个从firestore中检索数据
  • ERROR 错误:未捕获(承诺中):TypeError:无法读取未定义的属性“doc”类型错误:无法读取未定义的属性“doc”
  • ngOnInit(){ var ib = this.firestore.doc(users/${firebase.auth().currentUser}).snapshotChanges(); this.loki = ib.subscribe(data => { return { Name: data.payload.data()['Name'], };}); console.log(this.loki);
  • 收到此错误 core.js:15724 错误类型错误:无法读取 SafeSubscriber._next (home.page.ts:49) 处未定义的属性“名称”
【解决方案2】:

获取当前用户 Uid:

import { AngularFireAuth } from '@angular/fire/auth'

  constructor(private afAuth: AngularFireAuth){

           let uid = this.afAuth.auth.currentUser.uid
}

【讨论】:

  • 此错误弹出 ERROR 错误:未捕获(在承诺中):TypeError:无法读取 null 的属性 'uid' TypeError:无法在新主页(home.page.ts: 33)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
  • 2019-10-12
  • 2020-01-30
  • 2020-05-26
  • 2022-01-11
  • 2018-12-08
  • 2020-12-09
相关资源
最近更新 更多