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

React Native Firebase注册后无法创建用户节点问题求助

解决react-native-firebase注册后无法创建用户节点的问题

Hey,我看了你的问题描述和代码,马上就找到了核心问题——你在调用Firebase数据库的set()方法时,参数传错了!这也是为什么Android端出问题、iOS却能正常运行的原因,毕竟iOS对这类参数错误的容忍度比Android高一些。

问题出在哪?

看你这段代码:

.set({ name: userName, email: userEmail, id: user.uid }, dispatch({ type:REGISTER_SUCCESS, payload: user.uid }))

firebase.database().ref().set()的第二个参数应该是一个回调函数(用来确认数据写入是否成功),但你现在直接执行了dispatch(...),把它的返回值(一个React Native的ReadableNativeMap原生对象)传了进去。react-native-firebase的Android实现会尝试序列化这个参数,而原生Map对象根本没法被序列化,所以就抛出了你看到的那个错误;Mac下的Android没崩溃,但也因为参数不对,数据写入的逻辑没正常执行,自然就没生成用户节点。

修复后的代码

把dispatch和onSuccess的逻辑放到set()的回调里,等数据库写入成功后再执行这些操作,正确的写法如下:

//register
export const registerUser = (
 { userName, userEmail, password },
 onSuccess,
 onFail
 ) => {
 console.log("register user", userEmail, password);
 return dispatch => {
 firebase
 .auth()
 .createUserWithEmailAndPassword(userEmail, password)
 .then(user => {
 console.log("registering user.uid: ", user.uid);
 firebase
 .database()
 .ref(`${DBREF_USERS}${user.uid}`)
 .set({ name: userName, email: userEmail, id: user.uid })
 // 数据库写入成功后再执行redux dispatch和成功回调
 .then(() => {
 dispatch({ type: REGISTER_SUCCESS, payload: user.uid });
 onSuccess();
 })
 // 处理数据库写入失败的情况
 .catch(dbError => {
 onFail(true, { 
   dialogTitle: I18n.t("alert_dialog_title"), 
   dialogBody: dbError.message 
 });
 });
 })
 .catch(error => {
 onFail(true, { 
   dialogTitle: I18n.t("alert_dialog_title"), 
   dialogBody: error.message 
 });
 });
 };
};

额外要检查的点

  • 数据库路径:确认DBREF_USERS的结尾是/,比如'users/',不然拼接用户ID后会变成users12345这种错误路径,数据肯定写不进去
  • 数据库规则:检查Firebase控制台的数据库规则,确保注册后的用户有写入自己节点的权限,比如可以设置:
    {
      "rules": {
        "users": {
          "$userId": {
            ".write": "auth.uid === $userId",
            ".read": "auth.uid === $userId"
          }
        }
      }
    }
    
  • 版本兼容性:你的react-native(0.54.2)和react-native-firebase(4.1.0)版本都比较老旧,虽然当前问题和版本无关,但后续如果遇到其他奇怪问题,可以考虑升级到稳定的新版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:09:32