我想用" .on"来调用Firebase数据库。函数并在循环中再次调用它,例如:
var promise = new Promise((resolve, reject) => {
that.fireRef.child("users/"+uid+"/discussions").on('child_added', function (snapshot) {
var groupKey = snapshot.key;
console.log('OrdreUn');
that.discussionsUsers.child(groupKey).on('child_added', function (snapshot) {
user=snapshot.key;
console.log('OrdreDeux');
if(user==firebase.auth().currentUser.uid)
{
user=true;
resolve(groupKey);
}
});
console.log('ForderUn');
});
console.log('ForderDeux');
});
问题是我的console.log函数会告诉我执行是完全异步的,我不知道为什么但如果我使用.once
函数而不是.on
函数执行同步,问题是如果我使用.once function
我无法访问snapshot.key。
我想找到解决这个问题的正确方法。
答案 0 :(得分:0)
你可以使用.then,因为firebase本身会返回promise,你可以使用它来对firebase进行下一次调用以同步数据并根据groupkey
得到结果
var promise = new Promise((resolve, reject) => {
that.fireRef.child("users/"+uid+"/discussions").on('child_added').then(snapshot => {
var groupKey = snapshot.key;
that.discussionsUsers.child(groupKey).on('child_added', function (snapshot) {
user=snapshot.key;
console.log('OrdreDeux');
if(user==firebase.auth().currentUser.uid)
{
user=true;
resolve(groupKey);
}
});
})
});