I'm trying to get .then()
to work with .on()
but it only works with .once()
.
I get playersRef.on(...).then is not a function
, when trying it with on()
So what I have now is this:
let nodesRef = Firebase.database().ref('players')
let answers = {}
playersRef.on('value', (playersSnapshot) => {
playersRef.once('value').then((playersSnapshot) => {
playersSnapshot.forEach((playerSnapshot) => {
let playerKey = playerSnapshot.key
let answersRef = playerSnapshot.child('answers')
if (answersRef .exists()){
answers[playerKey ] = answersRef .val()
}
})
}).then(() => {
console.info(answers);
dispatch(setPlayerAnswers(answers))
})
})
But I don't like the fact that it is querying the ref twice.
How would I go about getting each
player's answer in this example? What would be a more correct way? Because I don't think this is the way the Firebase devs intended this.
And what is the reasoning that it is not implemented for .on()
? Because playersSnapshot.forEach(...).then
is also not a function... How do I execute something only once whenever the .on('value')
triggers?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…