1

Je vois qu'il n'y a aucun moyen de définir les règles de sécurité comme empêchant "supprimer et mettre à jour" pour un enfant.empêcher "supprimer et mettre à jour" un enfant dans firebase

".write": "!data.exists() && newData.exists() && !newData.exists()" 

cela n'a pas de sens.

+0

Pouvez-vous expliquer plus sur ta question? La règle '" .write ":"! Data.exists() && newData.exists() "' sur un emplacement spécifique dans la base de données permettra la création d'une valeur à cet emplacement, mais empêchera la mise à jour ou la suppression. –

+0

".write": "! Data.exists()" vous permet d'écrire si les données actuelles n'existent pas, donc supprimer et mettre à jour ne se produira pas parce que vous avez écrit les données. – aaabc

Répondre

1

Pour référence ultérieure, la console Firebase vous permet de tester les règles de sécurité de la base de données, afin de savoir ce qui fonctionne avant de publier ces règles. Cela étant dit, si je comprends bien votre question, vous voulez autoriser les utilisateurs à ajouter au nœud, mais pas supprimer ou mettre à jour. Vous seriez à la recherche de quelque chose du genre:

{ 
    "rules": { 
    ... 

    "childNodeName": { 
     ".write": "!data.exists()" 
    } 
    } 
} 

Vous ne devriez pas avoir besoin de ces deux autres conditions. Pour ne pas mentionner, ils ne se résoudreont jamais à la vérité puisque ces conditions ne peuvent pas être remplies.

Vous pouvez également utiliser un caractère générique si vous avez besoin d'ajouter plusieurs enfants à un chemin, mais vous ne voulez pas l'utilisateur de modifier ces enfants une fois qu'ils ont été ajoutés:

{ 
    "rules": { 
    ... 

    "childNodeName": { 
     "$pushId": { 
      ".write": "!data.exists()" 
     } 
    } 
    } 
} 
+0

Merci beaucoup Jen, c'était vraiment utile. J'ai essayé avec la validation au lieu de l'autorisation d'écriture et cela fonctionne très bien. – aaabc