【发布时间】:2021-01-02 21:35:27
【问题描述】:
我不确定标题是否正确描述了我的问题。如果我错了,请纠正我:)
我想调用一个函数来更新多个数据库/Firebase 身份验证中的用户数据(该函数然后调用多个其他异步函数)。我想在调用updateUserData() 的父函数中进行所有错误处理。我该怎么做?
这是我的代码:
async updateUserData(user: User) {
// Update Email
const currentUser = this.getCurrentUser();
if(user.email && user.email != currentUser?.email)
currentUser?.updateEmail(user.email)
// Update Display Name
if(user.displayName && user.displayName != currentUser?.displayName)
currentUser?.updateProfile({displayName: user.displayName})
// Update User DB
this.firestore
.collection('users')
.doc(user.uid)
.set(user, { merge: true })
// Update Public User DB
const publicUserDBRef = this.firestore.collection('public-users').doc(user.uid);
if(user.displayName && !user.settings.isPrivate) {
publicUserDBRef
.set({ uid: user.uid, displayName: user.displayName }, { merge: true })
} else {
publicUserDBRef
.delete()
}
}
我尝试使用try-catch 块,将.catch( error => { throw new Error(error.code) }) 添加到updateUserData() 中的所有异步函数中,使用return new Promise( (resolve, reject) => {...}(在函数末尾调用resolve(),在更新公共用户数据库后并在每个 .catch() 块中调用了拒绝)
【问题讨论】:
标签: javascript angular firebase google-cloud-firestore