Удалить пользователя и все его документы - PullRequest
0 голосов
/ 04 июня 2018

Когда пользователь хочет удалить свою учетную запись, я хочу убедиться, что «документы», созданные им в Firebase, также удалены.

В Интернете я нашел кое-какую справку:

deleteAccount() {

        const qry: firebase.firestore.QuerySnapshot = await this.afs.collection('houses', ref => ref.where('email', '==', this.afAuth.auth.currentUser.email)).ref.get();
        const batch = this.afs.firestore.batch();

        qry.forEach( doc => {
          batch.delete(doc.ref);
        });
      batch.commit();         
}

Но я получаю сообщение об ошибке по ключевому слову "await", которое гласит: 'await' expression is only allowed within an async function.

Можеткто-нибудь подскажет, как это исправить, или есть ли лучший способ сделать это?

Я довольно новичок в этом, поэтому я не знаю, как поступить, любая помощь очень ценится.

1 Ответ

0 голосов
/ 04 июня 2018

Решение состоит в том, чтобы создать функцию async.

Вы упомянули, что вы новичок в программировании, и в начале может быть трудно понять обещания и асинхронность / ожидание.Я бы рекомендовал вам посмотреть это видео для ознакомления.


Вы можете решить его двумя способами.

  1. Асинхронно, просто добавьте асинхроннослово: async deleteAccount() {
  2. Создайте цепочку обещаний (попробуйте на практике):

deleteAccount() {
  firebase.firestore.QuerySnapshot = await this.afs.collection('houses', ref => ref.where('email', '==', this.afAuth.auth.currentUser.email)).ref.get()
  .then(qry => {
    const batch = this.afs.firestore.batch();
    qry.forEach(doc => batch.delete(doc.ref));
    return batch.commit();
  })
  .then(() => console.log('done'))
  .catch(err => console.log(`failed with ${err.message}`)

Кстати, если вы используете асинхронное / ожидание, не забудьтепонять, попробовать / поймать хорошо.Удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...