Firebase,搜索后获取对象

时间:2016-06-20 12:40:29

标签: angularjs firebase

Hello我的目标是测试员工是否存在$ scope.CodeBarre值到我的FIREBASE数据库中,然后,如果$ CodeBarre存在,程序将打开一扇门。 $ CodeBarre var来自USB条形码扫描,它将扫描员工CardId ......

这是我的实际代码:

  /* TEST DU CODE BARRE EN LIGNE */
 $scope.CodeBarre="GA13081982";
function testerLeCodebarre() {

    var ref = new Firebase('https://blinding-heat-8502.firebaseio.com/employes').orderByChild("identifiant").equalTo($scope.CodeBarre);
    $scope.employe = $firebaseArray(ref);

    console.log($scope.employe);
} 

我在数组中获取的对象是$ scope.employe,如下所示:

picture of the result into firebug

我找到了合适的员工,但是之后无法让它进入angularJs视图,我只能通过键入$ scope来获得员工的姓名。雇工[0] .nom

注意:如果找不到员工,那么firebase返回的数组不为空,但我根本找不到员工对象....

我也尝试使用$ firebaseObject,但我无法获得常规的AngularJs对象。

请你帮忙谢谢

这就是我的模板的样子:

<div class="row">
        Bienvenue, {{employe.prenom}} {{employe.nom}}
</div>
  1. 尝试使用$ firebaseObject:
  2. 当我输入此内容时,尝试获取对象而不是数组时,它会很好地找到该员工,但问题是我无法访问该模板,因为我不知道预付$ ID(此$ ID由Firebase生成):

    /* TEST DU CODE BARRE EN LIGNE */
    

    function testerLeCodebarre(){

    var ref = new Firebase('https://blinding-heat-8502.firebaseio.com/employes').orderByChild("identifiant").equalTo($scope.CodeBarre);
    $scope.employe = $firebaseObject(ref);
    console.log($scope.employe);
    

    }

    这是我进入Firebug的原因:

    [获取一个物体时的萤火虫] [2]

    我的愿望只是将$ scope.employe填充到我从firebase获得$ id -KIcVJh9sdVSWMamGaA3的对象,但我真的不知道该怎么做它

    编辑:所以它适用于此:

        var ref = new Firebase('https://blinding-heat-8502.firebaseio.com/employes').orderByChild("identifiant").equalTo($scope.CodeBarre).once("value", function(snapshot) {
       var data = snapshot.val(); 
       if (data){
           console.log(data);
    
         //employee exists
         $scope.employe = data;
         console.log($scope.employe);
       }
    

    但是$ scope.employe =数据在我的模板中不起作用:

    <div class="row">
            Bienvenue, {{employe.prenom}} {{employe.nom}}
    </div>
    

    我仍然无法访问该对象,另外考虑到我不提前知道$ id:

    Object returned by firebase

    我尝试输入我的控制器 data.nom data.age ,但未定义。 我还试过$ scope.employe = data.nom;但是未定义

1 个答案:

答案 0 :(得分:1)

正如我所见,您将始终检索一名员工,因此您无需在案例中使用$firebaseArray。简单地说:

var ref = new Firebase('https://blinding-heat-8502.firebaseio.com/employes').orderByChild("identifiant").equalTo($scope.CodeBarre).on("child_added", function(snapshot) {
   var data = snapshot.val(); 
   if (data){
     //employee exists
     $scope.employe = data;
   }
});