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
相关产品推荐
相关产品推荐

