Firebase用once+then读取用户名返回Anonymous但控制台有数据求助
解决Firebase读取数据返回Anonymous的问题
大概率是路径大小写不匹配导致的问题,咱们来一步步排查修复:
问题根源
你的数据库节点是user3(全小写的u),但代码里读取的路径是/User3(大写的U):
return firebase.database().ref('/User3').once('value').then(function(snapshot) { var username = (snapshot.val() && snapshot.val().Name) || 'Anonymous'; alert(username) });
Firebase的数据库路径是大小写敏感的,/User3和/user3是两个完全独立的节点,这就导致snapshot.val()返回null,触发了|| 'Anonymous'的默认值。
修复方案
把代码里的路径改成和数据库一致的小写即可:
return firebase.database().ref('/user3').once('value').then(function(snapshot) { var username = (snapshot.val() && snapshot.val().Name) || 'Anonymous'; alert(username) });
额外排查建议(如果改完仍有问题)
- 检查节点权限:确认Firebase实时数据库的规则允许当前用户读取
user3节点。默认规则仅允许认证用户读写,若未配置认证,可临时调整规则测试(上线前务必改回安全规则):
{ "rules": { ".read": true, ".write": true } }
- 打印快照详情:在回调里添加日志,直观确认数据读取情况:
return firebase.database().ref('/user3').once('value').then(function(snapshot) { console.log("快照是否存在:", snapshot.exists()); console.log("快照数据:", snapshot.val()); var username = (snapshot.val() && snapshot.val().Name) || 'Anonymous'; alert(username) });
内容的提问来源于stack exchange,提问作者Prince Hamza
相关产品推荐
相关产品推荐

