【问题标题】:Get the value of a key after filtering with value in Firebase在 Firebase 中使用值过滤后获取键的值
【发布时间】:2017-01-10 21:13:45
【问题描述】:

我是 Firebase 的新手。我试图在用值过滤后获取键的值。 我首先使用

获取具有 room_num 值“323”的特定用户
uref.orderByChild("room_num").equalTo(room_num).once("value" ...

在我得到这个用户的对象后,我想访问他/她的电话号码。但是下面的代码并没有给我我需要的东西。

var uref = new Firebase('https://XXX.firebaseio.com/users');
uref.orderByChild("room_num").equalTo("323").once("value", function(data) {
      $scope.telephone = data.telephone;
      console.log($scope.telephone);
});

我也尝试用 $firebaseArray 包装它。

这是我的数据库的样子

users
  6GFbWBV9rINa3ZCDN45BgM1PO3o2
      email: "test@gmail.com"
      name: "Mark"
      room_num: "323"
      telephone: "72839202"

My database looks like this

【问题讨论】:

    标签: javascript angularjs firebase firebase-realtime-database


    【解决方案1】:

    回调传递了一个快照。对于与查询匹配的每个条目,快照都会有一个子项。要访问子快照中的数据,您需要调用val()

    uref.orderByChild("room_num").equalTo("323").once("value", function (snapshot) {
      snapshot.forEach(function (childSnapshot) {
        var data = childSnapshot.val();
        $scope.telephone = data.telephone;
        console.log($scope.telephone);
      });
    });
    

    【讨论】:

    • 当我将它更改为once("child_added") 时它可以工作它为once("value") 打印出undefined
    • console.log(data) 打印出Object 6GFbWBV9rINa3ZCDN45BgM1PO3o2: Object email: "test@gmail.com" name: "Mark" room_num: "323" telephone: "72839202"
    • 是的,答案有误。在这种情况下,value 回调会收到一个包含与查询匹配的子代的快照,您可以使用 forEach 枚举快照的子代。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多