【问题标题】:Firebase how to find child knowing its id but not its parent's id (js)Firebase如何找到知道其ID但不知道其父母ID的孩子(js)
【发布时间】:2019-03-17 20:02:45
【问题描述】:

我有一个 firebase 实时数据库(不是云)结构,例如:

users
  kasdf872ajsda   //user id
     auiiq6d182g1   //list id
        c: <mycontent>   //list content

我知道列表 ID(在本例中为 auiiq6d182g1)并且我想检索 &lt;mycontent&gt;,但我不知道用户 ID kasdf872ajsda,因为我要检索的可能不是来自当前使用该网站的用户(事实上,我没有为“读取”设置任何数据库规则,仅用于“写入”是否正确?)。

我现在正在做的是这个(不工作):

var ref = firebase.database().ref().child('users');
ref.child(listID).once("value", function(snapshot) {
  var snap = snapshot.val();
  myContent = snap.c;
});

【问题讨论】:

    标签: javascript database firebase snapshot


    【解决方案1】:

    您可以先提及用户:var ref = firebase.database().ref('users');

    然后循环遍历:

    ref.once('value').then((snapshot)=>{
       snapshot.forEach(function(data) {
          if (data.key == <YOUR_LIST_ID>) {
             //you can access data.c here...
          }
      });
    });  
    

    【讨论】:

    • 我收到此错误:未捕获(承诺中)错误:/users 处的 permission_denied:客户端无权访问所需数据。 (很奇怪,因为在规则中我设置了“读取”:true
    • 您必须仔细检查您的 Firebase 配置。您的网址设置正确吗?你确定你的规则是这样的吗:{ "rules": { ".read": true, ".write": true } }
    • 是的,firebase 工作正常,保存内容,获取内容等。读取规则设置为 true,写入规则设置为:“.write”:“$user_id === auth.uid”
    • 我解决了错误,规则中的“读取”:true 必须在 $user_id 子类别之外的上一步,但它现在什么都不做
    • 我解决了,发布了解决方案。给你竖起大拇指,因为你让我走上了正确的道路。谢谢
    【解决方案2】:

    找到解决方案,如果有人遇到同样的问题:

    ref.once("value", function(snapshot) {
          snapshot.forEach(function(data) {
            snap = data.child(<YOUR_LIST_ID>).child('c').val();
            if (snap != null){
              myContent = snap;
            }
          });
    });
    

    ref 与大家所说的相反:

    var ref = firebase.database().ref().child('users');
    

    这不起作用:

    var ref = firebase.database().ref('users');
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2015-12-10
      • 2023-03-04
      • 1970-01-01
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 2019-12-27
      相关资源
      最近更新 更多