Estoy tratando de actualizar un campo en mi nodo de base de datos en tiempo real. Actualmente está funcionando, pero recibo errores después de hacer clic en el botón, incluso el valor en la base de datos cambia. Básicamente cambiando favorite: true o favorite:false
Estos son los 2 errores que recibo cuando se presiona el botón.
@firebase/database: ADVERTENCIA DE FIREBASE: la devolución de llamada del usuario lanzó una excepción. onValue@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.familyrecipebook&modulesOnly=false&runModule=true:149302:35
TypeError: this.snapshotCallback.call no es una función. (En 'this.snapshotCallback.call(null, expDataSnapshot, previousChildName)', 'this.snapshotCallback.call' no está definido)
Este es mi código actual para actualizar el valor.
const markOrRemoveFavorite = () => { const recipeRef = ref(db, 'users/' + userId + '/recepies' + `/${item.id}`) // const recipeData = { // favorite: item.favorite ? false : true // } // const newRecipeKey = push(child(ref(db), 'users/' + userId + '/recepies' + `/${item.id}`)).key // const updates = {}; // updates[newRecipeKey] = recipeData; return update(recipeRef, {favorite: item.favorite ? false : true}) }Resolví el problema siguiendo. Pero el texto del botón no cambia aún en tiempo real.
const recipeRef = ref(db, 'users/' + userId + '/recepies' + `/${item.id}`) const recipeData = { favorite: item.favorite ? false : true } update(recipeRef, recipeData).then(() => { if (item.favorite === false) { Toast.show({ type: 'success', position: 'bottom', text1: 'Recipe', text2: `Recipe ${item.recipe} was added to favorites`, }) } else { Toast.show({ type: 'success', position: 'bottom', text1: 'Recipe', text2: `Recipe ${item.recipe} was removed from favorites`, }) } })