Ionic3 & Angular Firebase写入数据报错求助:Uncaught (in promise): [object Object]
嘿,我来帮你排查这个Firebase数据录入的问题!你说图片能成功传到Storage,但用户的邮箱、密码这些数据存不进去,还碰到了Uncaught (in promise): [object Object]这个模糊的错误,确实挺头疼的,咱们一步步来拆解:
第一步:先把错误详情挖出来,别让它躲起来
这个[object Object]完全没给有效信息,是因为你直接把Error对象转成字符串输出了。你得在Promise的捕获逻辑里把错误的详细内容打印出来,比如:
// 如果你用async/await写法 try { // 这里放你写入用户数据的代码 } catch (error) { console.error("数据录入错误详情:", error); console.error("错误码:", error.code); console.error("错误信息:", error.message); } // 如果你用.then().catch()写法 yourFirebaseWriteFunction() .then(res => { /* 成功逻辑 */ }) .catch(error => { console.error("数据录入错误详情:", error); console.error("错误码:", error.code); console.error("错误信息:", error.message); });
这样控制台里就能看到具体问题,比如权限被拒、路径写错、字段格式不对这些关键线索。
第二步:先排查Firebase数据库的权限规则
这是最常见的坑!你自己创建了用户数据表,但默认的Firebase数据库(不管是Realtime Database还是Firestore)规则是限制读写的,尤其是注册阶段如果还没完成用户认证就想写数据,肯定会被拦下来。
- 先做个临时测试(仅限开发环境,生产环境绝对不能一直开着),把规则改成开放读写:
如果是Realtime Database,规则改成:
如果这样能成功写入数据,那百分百是权限问题。之后再把规则改成安全的版本,比如只允许认证用户写入自己的信息:{ "rules": { ".read": true, ".write": true } }{ "rules": { "users": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }
第三步:检查用户数据录入的代码逻辑
既然图片能传Storage,说明Firebase初始化没问题,但用户数据的写入逻辑可能有疏漏:
- 确认你的注册流程是先完成Firebase Auth认证,再写用户数据:应该先调用
createUserWithEmailAndPassword创建认证用户,拿到用户的uid,再把邮箱(注意:密码绝对不要存到数据库里!Firebase Auth已经帮你加密存储了,存明文密码是严重安全风险)、其他用户信息和uid关联起来写入数据库。 - 检查数据库路径是否正确:比如你创建的用户表叫
users,是不是写成了firebase.database().ref('users/' + user.uid)这种格式,有没有拼写错误? - 检查要写入的数据:有没有传
undefined或者null的字段?Firebase可能会拒绝这类数据;有没有字段名包含特殊字符(比如.、#这些Firebase禁止的字符)?
第四步:结合你的register.html片段排查(虽然只贴了开头)
从你贴的html开头来看,要确保表单输入框的ngModel绑定正确,比如:
<ion-item> <ion-label>邮箱</ion-label> <ion-input type="email" [(ngModel)]="userEmail" required></ion-input> </ion-item> <ion-item> <ion-label>密码</ion-label> <ion-input type="password" [(ngModel)]="userPassword" required></ion-input> </ion-item>
要保证对应的ts文件里能正确获取到userEmail和userPassword的值,再传到Firebase的方法里。
内容的提问来源于stack exchange,提问作者metalhead101
相关产品推荐
相关产品推荐

