我正在尝试创建一个用户个人资料,指出该个人资料来自我应用程序中的一位业务所有者。应该创建一个配置文件,然后将其中包含“businessOwner”的“角色”数组之类的信息合并,并添加“businessId”。
有时,代码会无缝运行。在其他时候,只有角色和businessId会传递给创建的用户(而其他所有信息都不会!)。
async function writeToFirebase(values) {
authService.createUserWithEmailAndPassword(values.user.email, values.user.senha).then(
async function (user) {
userService.createUserProfileDocument(values.user)
const uid = user.user.uid
const userRef = await userService.doc(uid)
console.log('userRef', userRef)
try {
values.user.uid = uid
const { id } = await businessPendingApprovalService.collection().add(values)
await userRef.set({ roles: ['businessOwner'], businessId: id }, { merge: true })
} catch (error) {
console.error('error merging info')
}
},
function (error) {
var errorCode = error.code
var errorMessage = error.message
console.log(errorCode, errorMessage)
},
)
}
这是createUserWithEmailAndPassword:async createUserProfileDocument(user, additionalData) {
if (!user) return
const userRef = this.firestore.doc(`users/${user.uid}`)
const snapshot = await userRef.get()
if (!snapshot.exists) {
const { displayName, email, photoURL, providerData } = user
try {
await userRef.set({
displayName,
email,
photoURL,
...additionalData,
providerData: providerData[0].providerId,
})
} catch (error) {
console.error('error creating user: ', error)
}
}
return this.getUserDocument(user.uid)
}
最佳答案
我认为问题在于const snapshot = await userRef.get()
这行。
如documentation中所述,您应该使用then()
函数获取快照,以便首先返回 promise 。