2016-06-21 9 views
3

ich diese Struktur habenFeuerbasis folgende Zählung Regeln

"Following": { 
     ".validate": newData != null && newData.child(count).val() == root.child(Following).child($User).child(count).val() + 1), 
     "$User": { 
     "$Following": { 
      "created": {} 
     }, 
     "count": {} 
     } 
    } 

i verhindern wollen, dass die Zählvariable ohne die Erzeugung erhöht oder verringert werden kann, oder die Lösch eines folgenden

für verhindern, dass der Zuwachs ohne die Schaffung eines neuen folgenden i fügen diese Regel

".validate": newData != null && 
      newData.child(count).val() == 
        root.child(Following).child($User).child(count).val() + 1) 

, aber ich habe Probleme, die Abnahme ohne das löschen eines folgenden zu verhindern.

die meine frage ist diese

wie kann ich nur die Zählvariable abnehmen, wenn ich weiß, dass die folgenden gelöscht werden soll?

sorry für schlechtes Englisch:/

+1

Hey @DThink. Könnten Sie sich etwas genauer erklären, was genau Sie vorhaben, damit wir Ihnen helfen können? :) – adolfosrs

+0

Entschuldigung für mein schlechtes Englisch ist jetzt comprensible? – DThink

+0

viel besser! IMO sollten Sie diesen Zählkram nicht in der Datenbank speichern. Bewahren Sie die 'Folgen'-Daten wie gewünscht auf und zählen Sie sie auf der Anwendungsseite mit [numChildren()] (https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot#numChildren). – adolfosrs

Antwort

0

Was halten Sie von dieser Methode?

"Event": { 
      "$User": { 
      "counter": { 
       ".validate": "newData.hasChildren(['value', 'tmp'])", 
       "value": {}, 
       "tmp": {}, 
       "$other": { 
       ".validate": "false" 
       }, 
       ".write": "data.val() != null && newData.val() != null && (newData.parent().child(newData.child('tmp').val()).val() != null && newData.child('value').val() == data.child('value').val() + 1 || root.child('Event').child($User).child(newData.child('tmp').val()).val() != null && newData.parent().child(newData.child('tmp').val()).val() == null && newData.child('value').val() == data.child('value').val() - 1)" 
      }, 
      "$Event": { 
       //some variable and permissions 
      } 
      } 
     } 

i verwenden, um die Variable tmp das Ereignis Schlüssel zu erkennen, dass ich überprüfen wollen, ob in der Schöpfung oder in löschen und ich somit den Wert Variable aktualisieren. im Beispiel ich füge nur die Update-Regeln ohne andere Regeln, um nicht durcheinander zu kommen