我目前正在努力从某个用户那里获取所有Data对象。我以为我已经知道了,但是后来我注意到,它仅在我第二次单击按钮时才返回DATA(这意味着async无法正常工作)。如果您可以提出建议,那将是很大的帮助!谢谢!
async getData(UID) {
let container = [];
var firebaseRef = this.afd.database.ref();
let qwee = await firebaseRef.child('AllData/')
.orderByChild("UserID")
.equalTo(UID)
.on("child_added", function(snapshot) {
container.push(snapshot.val());
});
return container;
}
这是调用函数
async LoadUserData(){
this.Data = await this.provider.getData("Tom");
}
答案 0 :(得分:0)
您似乎混合了回调和Promise。
您需要将回调包装在promise中,然后等待它。
async getData(UID) {
let container = [];
var firebaseRef = this.afd.database.ref();
let qwee = await new Promise(function(resolve,reject){
return firebaseRef.child('AllData/')
.orderByChild("UserID")
.equalTo(UID)
.on("child_added", function(snapshot) {
resolve(snapshot.val());
//container.push(snapshot.val());
});
});
container.push(qwee);
return container;
}