如何从angularJS中的$ firebaseArray获取值和$ id

时间:2016-12-06 13:15:11

标签: javascript angularjs firebase firebase-realtime-database

嗨,我不是火力学专业的专业人士,刚开始从事这项工作。在搜索了很多地方之后,我找不到解决问题的方法。 My firebase database structure is as follow: 我想检索特定配置文件的数据以及firebase和。

生成的唯一$ id
  $scope.login = function(users)
  {
  firebase.auth().signInWithEmailAndPassword(users.email, users.password)
  .then(function(result)
  {
      var ref = firebase.database().ref("/profiles");
      var examination =  $firebaseArray(ref.orderByChild('uid').equalTo(result.uid));
      console.log(examination);

结果我得到的是 like this 任何人都可以在这方面帮助我,即如何从结果中获取值。在此先感谢。

2 个答案:

答案 0 :(得分:1)

如果您想检索数据并将其记录在代码中,请不要使用AngularFire并坚持使用JavaScript SDK:

$scope.login = function(users) {
  firebase.auth().signInWithEmailAndPassword(users.email, users.password)
  .then(function(result) {
    var ref = firebase.database().ref("/profiles");
    var examination = ref.orderByChild('uid').equalTo(result.uid);
    examination.on('value', function(snapshot) {
      console.log(snapshot.val());
    });

您注意到我添加了on('value',这就是您告诉Firebase SDK开始从数据库加载数据的方式。 Firebase documentation for web developers涵盖了这一点以及更多内容,我强烈建议您阅读端到端的内容。在那里度过几个小时,会有比你想象的更多的问题。

如果您更喜欢坚持AngularFire,那么您应该停止使用console.log来检查加载状态。来自AngularFire quickstart

  

... $scope.data将从远程服务器填充。这是一个异步调用,因此在控制器中数据可用之前需要一些时间。虽然将console.log放在下一行来阅读结果可能很诱人,但数据尚未下载,因此该对象似乎是空的。

相反,您可以直接在HTML模板中显示数据:

  

记录数据的最简单方法是使用Angular的json过滤器在视图中打印。 AngularFire告诉Angular编译器何时完成加载数据,因此无需担心何时可用。

<pre>{{ data | json }}</pre>

最后一个片段来自AngularFire指南中的handling asynchronous operations

答案 1 :(得分:1)

使用$loaded()承诺查看值:

 $scope.login = function(users)
  {
  firebase.auth().signInWithEmailAndPassword(users.email, users.password)
  .then(function(result)
  {
      var ref = firebase.database().ref("/profiles");
      var examination =  $firebaseArray(ref.orderByChild('uid').equalTo(result.uid));
      //console.log(examination);
      examination.$loaded().then(function (exam) {
          console.log(exam);
      });

重要的是要意识到调用$firebaseArray方法会立即返回一个空数组。从服务器返回数据后,将使用实际数据填充现有引用。

$loaded()方法返回一个从数据库下载数组数据时解析的promise。承诺解析为$firebaseArray