工厂中的Firebase查询

奥斯卡·华雷斯(Oscar Juarez)

我在Firebase查询中苦苦挣扎,我有这个工厂:

.factory("usuariosFac", ["$firebaseArray","$q","$firebaseObject",
    function($firebaseArray,$q,$firebaseObject) {
      return {

        getByEmail: function(email){
          var ref = firebase.database().ref("usuarios");
          var query=ref.orderByChild("email").equalTo(email).on("child_added", function(data) {
            console.log(data.val());
            return data.val();
          });
        }
      }

    }
])

此功能在我的控制器中:

$scope.findUser = function() {
    $scope.usuario=usuariosFac.traeGrupoPorEmail($scope.formLogin.usuario);
};

当我运行它时,工厂内的控制台日志可以正常打印。但是$scope.usuario是未定义的,为什么呢?

乔治

但是$scope.usuario是未定义的,为什么呢?

回调函数被异步调用嵌套函数中return语句不会将值返回给父函数。

而是创建并返回一个Promise:

app.factory("usuariosFac", ["$firebaseArray","$q","$firebaseObject",
    function($firebaseArray,$q,$firebaseObject) {
      return {

        getByEmail: function(email){
          //Create defer object
          var future = $q.defer();
          var ref = firebase.database().ref("usuarios");
          var query=ref.orderByChild("email")
            .equalTo(email)
            .once("child_added",
                function onSuccess(data) {
                   console.log(data.val());
                   //RESOLVE
                   future.resolve(data.val());
                },
                function onReject(error) {
                   //OR REJECT
                   future.reject(error);
                }
            );
          //RETURN promise
          return future.promise;
        }
      }

    }
])

在控制器中,使用.then返回的Promise方法:

$scope.findUser = function() {
    var promise = usuariosFac.traeGrupoPorEmail($scope.formLogin.usuario);
    promise.then(function onSuccess(data) {
        $scope.usuario = data;
    }).catch(function onReject(error) {
        console.log(error);
        throw error;
    });
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Angular工厂中使用Firebase查询?

来自分类Dev

如何在Angular工厂中使用Firebase查询?

来自分类Dev

Firebase中的OR查询

来自分类Dev

在firebase中查询

来自分类Dev

Firebase中的OR查询

来自分类Dev

在firebase中查询

来自分类Dev

Firebase 中的过滤查询

来自分类Dev

在firebase中查询列表

来自分类Dev

在spring和static工厂中查询Bean实例

来自分类Dev

在AngularJS工厂中从Firebase推送和获取数据

来自分类Dev

在 Android 中查询 Firebase 数据

来自分类Dev

Firebase Recycvlerview 中的更改查询

来自分类Dev

Azure数据工厂:数据流中的普通SQL查询不返回任何内容

来自分类Dev

Azure 数据工厂 SOQL 查询中的语法错误 WHERE LastModifiedDate >= datetime

来自分类Dev

Firebase从角度工厂获取数据

来自分类Dev

产品中包含工厂的抽象工厂模式和多层工厂

来自分类Dev

DDD中的工厂模式

来自分类Dev

更新规格中的工厂

来自分类Dev

R中的功能工厂

来自分类Dev

在工厂中安装ngResource

来自分类Dev

服务或工厂中的$ rootScope。$ on

来自分类Dev

THIS在工厂中的AngularJS范围

来自分类Dev

在Firebase中按孩子的孩子进行查询

来自分类Dev

在firebase中查询嵌套数据

来自分类Dev

Firebase和AngularJS中的基本查询

来自分类Dev

Firebase查询中的多个WHERE子句

来自分类Dev

如何查询Firebase中的相关记录?

来自分类Dev

在Firebase Firestore中查询时出错

来自分类Dev

使用Swift的Firebase中的GeoHash查询