如何循环来自firebase的子记录

时间:2017-07-25 04:47:59

标签: firebase ionic-framework firebase-realtime-database ionic2

我的主要目标是遍历请求表中的所有记录,以检查用户是否有reqdetails。我尝试了我的方式,但我没有变得不正确,当我控制台登录时没有显示任何内容。

我的声明和构造函数:

  request: FirebaseListObservable<any>;
  userkey: any;
  reqdetails: FirebaseListObservable<any>;

  constructor(public navCtrl: NavController, public navParams: NavParams, angFire: AngularFireDatabase) {
    this.request = angFire.list('/request');
    this.reqdetails = angFire.list('/request/reqdetails');
  }

我的声明和firebase控制台,显示一个请求表,其中包含一个带有reqdetails的用户密钥。

enter image description here

我的代码:

openMapPage()
  {


    let process = this.request.subscribe(records => {
// your logic
 records.forEach(record => {

  var ref = firebase.database().ref("request");
    ref.once("value")
  .then(function(snapshot) {
    var a = snapshot.exists();  // true
    var b = snapshot.child(this.reqdetails).exists(); // true
    var c = snapshot.child(this.userreq).exists(); // true


     if(c.child(b).exists())
     {
     console.log(record.$key);
     }

});

});



  });



  }

1 个答案:

答案 0 :(得分:0)

您必须传递您的用户ID才能接收用户数据。要将用户密钥插入查询字符串,可以使用Template Strings。请参见下面的示例:

request: FirebaseListObservable<any>;
userkey: any;
userreq: FirebaseListObservable<any>;

constructor(public navCtrl: NavController, public navParams: NavParams, angFire: AngularFireDatabase) {
  this.request = angFire.list('/request');
  this.userreq = angFire.list(`/request/${this.userkey}`);
}

要检查用户是否有reqdetails,您可以检查以下内容:

openMapPage() {
  this.userreq.once('value', function(snapshot) {
    if (snapshot.hasChild('reqdetails')) {
      console.log('exists');
    }
  });
}