【问题标题】:Firebase database child referenceFirebase 数据库子参考
【发布时间】:2020-06-20 01:12:33
【问题描述】:

那些轮次指的是用户ID(uid), 我的问题是如何引用当前用户的孩子 我尝试了很多类似 forEach、orderByKey 等的方法,但我找不到解决方案,所以任何人都可以帮助我吗? (注意:我是初学者

【问题讨论】:

  • 你要检索什么?
  • 我想检索当前用户的姓名和年龄等数据
  • 1) “我尝试了很多” -> 请编辑您的问题以显示重现您所尝试内容的最少代码。如果我们看到您已经完成的工作,我们会更容易提供帮助。 2) 为什么将帐户存储在推送 ID 下?我建议不要调用push(),而是直接使用firebase.database().ref('Accounts').child(firebase.auth().currentUser.uid).set(...)
  • 感谢 Frank Van Puffelen,它对我有用!但是,如果我想在不影响现有数据的情况下将另一个数据推送到现有子节点,该怎么办

标签: javascript html firebase web firebase-realtime-database


【解决方案1】:

将数据库的结构改为如下:

Accounts
   userId
      randomId
          age : 100
          name : peter
   userId
      randomId
          age : 120
          name : peterx

这样查询起来会更方便,现在可以进行如下操作:

let ref = firebase.database().ref("Accounts");
let user = firebase.auth().currentUser;

ref.child(user.uid).on("value",(snapshot)=> {
 snapshot.forEach((childSnapshot) => {
  let childData = childSnapshot.val();
  let age = childData.age;
  let name = childData.name;
  console.log(childData);
 });
});

另一种方法是去掉randomId,直接访问数据,不使用forEach

https://firebase.google.com/docs/auth/web/manage-users

【讨论】:

  • 但是当我尝试记录姓名和年龄时,它显示我未定义
  • 你在哪里登录?
  • 在 console.log(childData) 之后我尝试了 console.log(${age} and ${name})
  • console.log(childData); 给你什么?此外,api 是异步的,因此您只能访问 foreach 中的数据
猜你喜欢
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多