Firebase Firestore:如何判断setDoc是创建还是覆写用户文档?
问题解答
setDoc 操作的行为
你这段代码里,setDoc 使用用户的 Firebase Auth uid 作为 Firestore 文档的 ID,并且传入了 { merge: true } 参数,具体行为如下:
- 若为用户首次登录:Firestore 中不存在该
uid对应的文档,setDoc会直接创建新文档,写入你传入的所有字段。 - 若为用户非首次登录:Firestore 中已有该
uid对应的文档,setDoc会执行合并更新——保留文档中原有的未被传入的字段,同时更新你传入的已有字段,或新增你传入的新字段。
避免查询邮箱的解决方案
你完全不需要通过查询邮箱来判断用户是否已注册:
Firebase Auth 分配给每个用户的 uid 是全局唯一的,且与用户的认证账号一一绑定。用这个 uid 作为 Firestore 用户文档的 ID,天然能保证每个用户对应唯一的文档。
这种方式下,无需做任何邮箱查询操作,也就不用修改 Firestore 的安全规则来开放邮箱查询权限,能有效保证用户数据的私密性。
内容的提问来源于stack exchange,提问作者Marco Gagliardi
相关产品推荐
相关产品推荐

