Вы возвращаете значение, когда обещания query.once('value')
разрешаются.
Чтобы прояснить это, посмотрите на это:
let a = 0;
asyncFunctionPromise.then(() => {
a = 1;
});
console.log(a); // Will print 0 instead of
Вместо этого прямо верните обещание return query.once('value').then(....
или создайте свое собственное с
return new Promise((resolve) => {
query.once('value').then(snapshot=>{
// do something
resolve(snapshot.val()); // To resolve the promise with snapshot.val()
});
})