当用户想要删除他的帐户时,我想确保他在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.
任何人都可以告诉我如何解决这个问题,或者是否有更好的方法来解决这个问题?
我对此很新,所以我不确定如何继续,非常感谢任何帮助。
答案 0 :(得分:0)
解决方案是创建async
函数。
你提到你是编程新手,一开始很难理解promises和async / await。我建议你看this video进行介绍。
你可以通过两种方式解决它。
async deleteAccount() {
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}`)
顺便说一下,如果你使用async / await,请记得好好理解try / catch。快乐的编码!