You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Firestore存储用户时管理员权限刷新丢失与新用户创建问题

Firebase用户数据写入同时避免覆盖额外字段的最优方案

你遇到的问题可以通过Firestore原生的set方法合并配置直接解决,无需额外做文档存在性判断,也不用在set和update之间做分支选择。
set方法支持传入第二个参数配置项,添加{ merge: true }后就可以同时满足两类场景需求:

  • 新用户首次登录无对应文档时,会自动创建包含name、email字段的用户文档
  • 老用户再次登录(含页面刷新触发的重新登录逻辑)时,仅更新传入的name、email字段,保留文档中已有的isAdmin等其他业务字段,不会出现整文档覆盖导致的权限丢失问题

修改后的代码如下:

this.db
        .doc('/users/' + user.uid)
        .set({
          name: user.displayName,
          email: user.email,
        }, { merge: true }) // 新增合并配置项
        .then(() => console.log('user saved successfully'))
        .catch((reason: any) => console.log('user save failed:', reason));

内容的提问来源于stack exchange,提问作者KietelenMetSchapen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:45:05