首页 > 解决方案 > this.db.object 的 firestore 等价物是什么?

问题描述

将此概念/教程用于项目(https://angularfirebase.com/lessons/custom-usernames-with-firebase-authentication-and-angular/)但是它在firebase中,我需要Firestore等价物。

我尝试了以下方法:

  checkUsername(tag: string) {
    console.log('Checking Username: ' + username);
    return  this.afs.collection('usernames', ref => ref.where('username', '==', tag)).valueChanges();
  }

我只想检索集合中的特定字段并检查它是否可用。

谢谢

标签: angulargoogle-cloud-firestore

解决方案


您不需要通过 snapShotChanges/valueChanges 监听更改。

只需使用 limit(1) 进行简单的获取(我们不在乎是否有超过 1 个用户名)并检查大小是否 > 0。如果 > 0 => 使用用户名,否则用户名可用:

const db = firebase.firestore()

const isUserNameTaken = async (tag: string): Promise<boolean> => {
  const query = db.collection('usernames').where('username', '==', tag).limit(1)
  const docs = await query.get()
  return !!docs.size
}

// returns true if username taken otherwise returns false

const isTaken = await isUserNameTaken('John')
if (isTaken) // do something

推荐阅读