Firebase匿名账号关联邮箱密码时onCreate云函数误触发并覆盖Firestore用户文档的问题咨询
Firebase匿名账号关联邮箱密码时onCreate云函数误触发并覆盖Firestore用户文档的问题咨询
大家好,我最近碰到一个Firebase相关的问题,想请教下各位:
我写了一个Cloud Function,用来在用户创建账号时自动在Firestore里生成对应的用户文档,代码如下:
exports.addUser = functions.auth.user().onCreate(async (user) => { const {uid, email} = user; const userRecord = { createdAt: admin.firestore.FieldValue.serverTimestamp(), ...(email && {email}), }; try { await db.collection("users").doc(uid).set(userRecord); return true; } catch (error) { console.error("Error adding user:", error); return null; } });
这个函数在用户匿名登录时工作得很正常,能正确创建Firestore文档。但当我在客户端用下面的代码把刚创建的匿名账号关联邮箱密码(相当于账号升级)时:
val credential = EmailAuthProvider.getCredential(email, password) currentUser?.linkWithCredential(credential)?.await()
上面那个onCreate云函数居然被触发了!而且直接把Firestore里已有的那个用户文档给覆盖了——这明明是账号升级操作,不是新账号创建啊?
我想问问:
- 这种触发
onCreate函数的情况是Firebase的正常行为吗? - 有没有办法避免这种不必要的覆盖?
另外我之前看到有个说法和我遇到的情况完全相反,说匿名用户升级不会触发onCreate函数,这就让我更疑惑了。
内容来源于stack exchange
相关产品推荐
相关产品推荐

