Estoy utilizando la base de datos en tiempo real de Firebase para mi aplicación web. Tengo un nodo en la base de datos llamada Usuarios que se parece a esto:
Users{ userID{ Name Post Type AutoRefresh Uploads{ upload1 upload2 } News{ news1 news2 } Friends{ friend1 friend2 } Requests{ req1 req2 } } }
He establecido las siguientes reglas de base de datos para este nodo:
{ "rules": { "Users": { ".read": "auth != null", "$userID": { ".write": "auth.uid === $userID && !newData.hasChild('Post') && !newData.hasChild('Type') && !newData.hasChild('Friends') && !newData.hasChild('Requests') && !newData.hasChild('Uploads') && !newData.hasChild('News')" } } }
El problema es que cuando bash escribir algo de valor en la ubicación Usuarios / ID de usuario / Actualización automática de mi aplicación web, aparece el siguiente error:
Uncaught (in promise) Error: PERMISSION_DENIED: Permission denied at Repo.js:510 at Object.t.exceptionGuard (util.js:536) at e.callOnCompleteCallback (Repo.js:501) at Repo.js:278 at PersistentConnection.js:402 at t.wt (PersistentConnection.js:435) at e.wt (Connection.js:262) at e.ln (Connection.js:256) at t.onMessage (Connection.js:157) at t.Wn (WebSocketConnection.js:197)
Estoy usando el siguiente código para realizar la operación de escritura:
firebase.database().ref().child('Users/' + userID + '/AutoRefresh').set('Off').then(function(){ //Do something });
Cuando pruebo esta operación de escritura en el simulador de la consola Firebase, escribe perfectamente el nuevo valor en el nodo AutoRefresh . ¿Por qué no funciona en la aplicación? ¿Estoy haciendo algo mal?
Este problema ocurrió después de aplicar las reglas. Antes de aplicar las reglas, funcionaba perfectamente.