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

Firebase Auth onCreate函数添加字段至Firestore不生效求助

问题原因与解决方案

问题出在你直接修改Firebase Auth传入的user对象——它不是普通的JavaScript对象,而是Firebase的UserRecord实例。这种自定义对象的属性是受限制的,直接新增的字段不会被JSON.stringify序列化,所以存入Firestore时会丢失,console.log也看不到新增字段。

修复步骤

  • 先将UserRecord转换为普通JS对象,这样才能自由添加自定义字段
  • 移除多余的JSON.parse(JSON.stringify())操作,直接将处理后的对象传入create()

修正后的代码

const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();

exports.newUser = functions.auth.user().onCreate((user)=>{
    // 将UserRecord转换为普通JS对象
    let currentUser = { ...user };
    // 添加自定义字段
    currentUser.hasSeenProfileUpdate = false;
    // 直接存入Firestore
    return db
        .collection("user")
        .doc(user.uid)
        .create(currentUser);
})

也可以用Object.assign实现对象转换:

let currentUser = Object.assign({}, user);

这样修改后,hasSeenProfileUpdate字段会正常出现在Firestore文档中,console.log输出的currentUser也能看到该字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:27:27