AngularFireDatabase 不同步检索数据



我的代码实时返回一个值:

import { Injectable } from '@angular/core';
import { AngularFireDatabase } from '@angular/fire/database';
import { Usuario } from '../modelos/usuario';
import { UsuarioClass } from './../modelos/usuario-class.model';
@Injectable({
    providedIn: 'root'
})
export class UsuarioService {
    keyUsuario: string;
usuLogin: UsuarioClass;
constructor(
    private dbFireDatabase: AngularFireDatabase) {
}
getAuthenticateUser(
    strLogin: string,
    strPassword: string,
    intEstadoActivo: number) {
    var strKey : string = "";
    var objUsu : UsuarioClass = null;
    var query = this.dbFireDatabase.database.ref("TableUser").orderByKey();
    query.on('value', function(snapshot) {
        snapshot.forEach(function(childSnapshot) {
            objUsu = <UsuarioClass>childSnapshot.val();
            if ((objUsu.LOGIN.trim() == strLogin.trim()) &&
                (objUsu.PASSWORD.trim() == strPassword.trim()) &&
                (objUsu.ESTADO == intEstadoActivo)) {
                strKey = childSnapshot.key;
                return true;
            }
        });
    });
    if ((strKey != "") && (strKey != null) && (strKey != undefined)) {
        xxxxx    //other step.
    }
    }
}

该代码在函数的第二个调用中效果很好,但是在第一个函数中效果很好。我尝试使用asyncawait,但我不知道正确的方法。在拳头呼叫中,Strkey是空的,但是在第二个和更高版本中,Strkey有一个值。

做类似的事情:

var query = this.dbFireDatabase.database.ref("TableUser").orderByKey();
  query.once('value', function(snapshot) {
     /*Some code here*/
     return someResult;  
   }
  });                             
});

然后以这样的方式调用此功能:

this.yourService.getAuthenticateUser().then((result)=>{
     /* use the result*/
  }

最新更新