Firestore (et Firebase) ne font pas vraiment les distinctions sur le "propriétaire" des données. Vous pouvez créer des règles pour implémenter des stratégies de propriété, mais il n'y a rien d'intrinsèque qui force cela à être le cas. Dans les règles Firestore, les règles Firestore s'appliquent à l'ensemble des documents. Vous ne pouvez donc pas masquer les colonnes sensibles. Une solution typique consiste à avoir des champs publics dans un document et des champs privés dans un second. Vous pouvez alors write rules to enforce different access to the separate documents. Lorsque vous écrivez plusieurs documents comme celui-ci, vous avez quelques options. Une façon est d'écrire l'intégralité de l'enregistrement dans une moitié privée et d'avoir un filtre de fonction qui écrit la partie publique. L'inconvénient de ceci est qu'il y a un délai entre le moment où vous écrivez la partie privée et quand vous pouvez voir la partie publique mise à jour.
Une autre approche consiste à utiliser des lots d'écriture pour écrire dans les deux documents de manière atomique. Contrairement aux transactions complètes, qui exigent que vous soyez en ligne, les lots d'écriture peuvent être utilisés hors ligne et sont appropriés lorsque vous devez effectuer une modification atomique de deux ou plusieurs documents, mais que vous ne prévoyez pas d'autres écritures. Un utilisateur mettant à jour son propre profil serait un bon exemple d'un cas où les lots d'écriture fonctionnent très bien.
Dans Firebase, vous pouvez restreindre l'action d'écriture et de lecture de l'utilisateur à partir de son uid ou de toute autre condition que vous souhaitez, telle qu'une valeur de chaîne dans son UID qui lui permettrait de voir un autre nœud. – Torewin
Je pense, mais je ne l'ai pas encore essayé. Voir https://firebase.google.com/docs/firestore/security/secure-data#shallow_queries –