Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Firebase中的嵌套属性获取用户_Firebase - Fatal编程技术网

通过Firebase中的嵌套属性获取用户

通过Firebase中的嵌套属性获取用户,firebase,Firebase,我在Firebase中尝试访问一些嵌套代码。我知道如何在第二个用户中访问,但第一个用户我不知道如何访问 我有下面第二个代码,但不是第一个。我怎么做同样的事情 ref.child('users') .orderByChild('username') .equalTo(username) .once('value', function (snapshot){ console.log(snapshot.val()) }) 对于下面的数据 users { "first_

我在Firebase中尝试访问一些嵌套代码。我知道如何在第二个用户中访问,但第一个用户我不知道如何访问

我有下面第二个代码,但不是第一个。我怎么做同样的事情

ref.child('users')
  .orderByChild('username')
  .equalTo(username)
  .once('value', function (snapshot){
    console.log(snapshot.val())
  })
对于下面的数据

users {
    "first_user" : {
      "info" : {
        "admin" : false,
        "email" : "adaaasds",
        "first" : "Sam",
        "last" : "Cassell",
        "username" : "samcassell"
      }
    },
    "second_user" : {
      "admin" : false,
      "email" : "johndoe@gmail.com",
      "first" : "john",
      "last" : "doe",
      "username" : "johndoe"
    }
  }

在您的示例中,要查询像
first\u user
这样的结构化数据,您需要指定子级的深度路径:

ref.child('users'))
.orderByChild('信息/用户名')
.equalTo(用户名)
.once(值),函数(快照){
snapshot.forEach(函数(childSnapshot){
log(childSnapshot.key,JSON.stringify(childSnapshot.val());
});
})
对于希望只有一个子项匹配的查询,可以调用
limitToFirst
,并可以像这样使用
forEach

ref.child('users'))
.orderByChild('信息/用户名')
.equalTo(用户名)
.limitToFirst(1)
.once(值),函数(快照){
var用户;
forEach(函数(childSnapshot){user=childSnapshot.val();});
如果(用户){
log(JSON.stringify(child.val());
}否则{
console.log('未找到用户');
}
})

那么,有没有办法检索从snapshot.val()返回的对象。e、 它返回
Object{firstUser:Object}
。我唯一能想到的方法是
Object.keys(snapshot.val())[0]
,但这似乎已经更新了答案。显然,我之前的评论是疯狂的。真的,我应该等到喝了早上的咖啡后再回答任何问题。实际上,我只是改用了一次(“child_added”)。我不认为这有什么大不了的!使用
一次('child_added')
是一个很好的解决方案,但是如果密钥不存在,则不会发生任何事情(除非以后添加)。这可能不是问题,但要记住。