reglas realtime objective auth ios swift firebase firebase-database

realtime - rápido mostrando publicaciones de todos los usuarios de Firebase



reglas firebase (1)

Necesitará un nodo padre diferente llamado Libros: -

En este momento su JSON es algo como esto: -

posts : { userID1 : { BOOK_11_ID : {.....} }; userID2 : { BOOK_21_ID : {.....}, BOOK_22_ID : {.....}, BOOK_23_ID : {.....}, BOOK_24_ID : {.....}, } }

Tienes que modificar tu estructura JSON de base de datos a:

posts : { Users_books :{ userID1 : { BOOK_11 : true // Value ''true'' means that this user // has subscribed or bought this book or whatever }; userID2 : { BOOK_21 : true, BOOK_22 : true, BOOK_23 : true, BOOK_24 : true, } }, Books:{ BOOK_11_ID : {/Book details/}; BOOK_21_ID : {/Book details/}; BOOK_22_ID : {/Book details/}; BOOK_23_ID : {/Book details/}; BOOK_24_ID : {/Book details/}; } }

Modifique sus reglas de seguridad para que la sección ''Libro'' esté visible para todos los usuarios autenticados.

{ "rules" :{ "Users_books" : { ".write" : "auth != null && auth.uid === $uid", // Will allow only the user to make any change within its node and no-one else ".read": "auth != null && auth.uid === $uid" }, "Books" : { ".write" : "auth != null", // Will allow all the users that are authenticated to your app to access every books detail. ".read" : "auth != null" } } }

Ahora lo que tienes que hacer es:

1) Si es el usuario que está creando el libro; A continuación, almacene los detalles del libro en el nodo padre ''Libros'' en el libro uid y establezca el valor de book_ID en verdadero en el nodo de usuarios.

2) Si la base de datos es back-end, es decir, la ingresaste; Siempre que el usuario se suscriba o compre libros, simplemente busque el idioma de ese libro y configúrelo como verdadero en la sección de ese usuario.

PD : siempre despliegue su base de datos en un abanico; es mucho más fácil buscarlo. Aunque estoy bastante seguro de que vas a querer almacenar algunos detalles personales del usuario en el futuro cercano, para eso simplemente crea otro nodo. Llámalo ''Usuarios'' , las reglas de seguridad serán las mismas que ''Users_books'' y debajo ''Parent'' de los usuarios anexarán detalles de cada usuario con su uid como clave.

Necesito crear un UISearchController usando firebase como back-end. Actualmente tengo dos usuarios en firebase. Un usuario ha hecho una publicación y la otra ha realizado cuatro publicaciones. Me gustaría poder buscar el título de todos los libros en mi base de datos (que son cinco). Sin embargo, a partir de ahora, solo puedo buscar los libros que cargó el usuario que inició sesión actualmente. A continuación hay una captura de pantalla de cómo se ve mi base de datos y cómo se ve mi código actualmente.

databaseRef.child("posts").child(userID!).observe(.childAdded, with: { (snapshot) in let key = snapshot.key let snapshot = snapshot.value as? NSDictionary snapshot?.setValue(key, forKey: "uid") if(key == self.loggedUser?.uid) { print("same as logged in user") } else { self.usersArray.append(snapshot) self.followUsersTableView.insertRows(at: [IndexPath(row:self.usersArray.count-1,section:0)], with: UITableViewRowAnimation.automatic) } }) { (error) in print(error.localizedDescription) } }