Supposons que j'ai ce schéma:Comment annuler une fois() manuellement dans Firebase?
{
"movies": {
"movie-id-1": {
"title": "Rambo no. 5",
"description": "",
"genre": "genre-id-1"
}
},
"genres": {
"genre-id-1": {
"name": "Action",
"description": ""
}
}
}
je dois commencer un auditeur child_added
sur /movies
:
const onMovieChildAdded = ref.child('movies').on('child_added', (movieSnap) => {
const movie = movieSnap.val()
ref.child(`genres/${movie.genre}`).once('value').then((genreSnap) => {
const genre = genreSnap.val()
console.log(movie.title, genre.name)
})
})
Dans le code ci-dessus, si un nouveau film est ajouté à la liste, je joue aussi une autre requête qui récupère son genre. La question est, si j'éteins l'auditeur child_added
:
ref.child('movies').off('child_added', onMovieChildAdded)
Comment puis-je annuler la once('value')
à l'intérieur aussi bien?
Parce que parfois le rappel once('value')
est toujours appelé même après avoir désactivé child_added
.
« une fois » ne devrait obtenir appelé ... une fois. –
Si j'ai bien compris votre question, la méthode .once() arrêtera automatiquement d'écouter une fois que les données arrivent. Vous n'êtes pas obligé d'appeler .off(). –
Je sais à ce sujet. Mais je veux l'annuler, c'est-à-dire ne pas continuer à exécuter le rappel après avoir appelé '.off ('child_added')'. Y a-t-il un moyen de l'annuler? Ou puisque c'est une promesse, il n'y a aucun moyen d'annuler? – jaye