我的主要目标是遍历请求表中的所有记录,以检查用户是否有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的用户密钥。
我的代码:
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);
}
});
});
});
}
答案 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');
}
});
}