Что такое пожарный эквивалент this.db.object? - PullRequest
0 голосов
/ 24 апреля 2019

Использование этой концепции / учебного пособия для проекта (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();
  }

Я хотел бы только получить это конкретное поле в коллекции и проверить, доступно ли оно или нет.

Спасибо

1 Ответ

0 голосов
/ 24 апреля 2019

Вам не нужно прослушивать изменения через snapShotChanges / valueChanges.

Просто выполните простое получение с ограничением (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...