【问题标题】:How to retrieve data that matches a firebase userID如何检索与 Firebase 用户 ID 匹配的数据
【发布时间】:2016-11-09 20:20:38
【问题描述】:

以下是我的 firebase 数据库中的数据,我想通过使用他的 firebase 用户 ID 获取用户的“doctorDetails”。

数据库结构:医生/用户ID/医生详情

// Data in Database :

{
  "doctors" : {
    "65smvSYkhfVBtM2GrPmOl3cdgDy1" : {
      "doctorDetails" : {
        "designation" : "Principal Scientist",
        "docRegNumber" : "242354",
        "doctorName" : "Dr Nicole Tesla",
        "doctorVerified" : false,
        "mobileNumber" : "970050 8070",
        "specialization" : "Physicist"
      }
    },
    "FOCSwhfIZSOpqUgueoWlakSkVYr1" : {
      "doctorDetails" : {
        "designation" : "Principal Scientist",
        "docRegNumber" : "87509",
        "doctorName" : "Dr Curie ",
        "doctorVerified" : false,
        "mobileNumber" : "80690 00343",
        "specialization" : "Physicist"
      }
    }
  }
}

以下是我使用他们的 firebase 用户 ID 获取“医生详细信息”的代码。

var userId = firebase.auth().currentUser.uid;     
firebase.database().ref('doctors/'+userId+'/doctorDetails').on('value', function(snapshot){
    console.log(snapshot.val());
});

但是,我仍然无法获取具有 userID 的用户的“医生详细信息”,有人可以建议我哪里出错了吗?

[编辑 1] 上面的代码只监听变化,如何在不附加监听器的情况下提取数据。

[编辑 2] 这是我设置的权限,我需要进行哪些更改才能读取数据?

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    },
    "doctors":{
        "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

【问题讨论】:

  • 你调试过你的userId吗?查看代码,您的 firebase 调用应该可以正常工作。
  • 我可以记录 userId。
  • 通过添加第二个回调, function(error) { console.error(error); }) 将错误侦听器附加到on(),它可能会告诉您出了什么问题。
  • 我收到此错误:permission_denied at /doctors/FOCSwhfIZSOatgwesbs FWRF/doctorDetails: 客户无权访问所需数据

标签: firebase firebase-realtime-database


【解决方案1】:

问题在于我的数据库规则:

旧的数据库规则

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    },
    "doctors":{
        "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

将数据库规则(在 databases.rules.json 中)更新为以下有助于解决问题的内容

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid",
        ".read": "$uid === auth.uid"
      }
    },
    "doctors":{
        "$uid": {
        ".write": "$uid === auth.uid",
        ".read": "$uid === auth.uid"
      }
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多