0

Ich habe ein Array einschließlich einiger objecta. Der Benutzer sollte alle Objekte über moduls/ und einen bestimmten über moduls/$id aufrufen können. Aber wenn es kein Modul gibt, sollte die Datenbank einen Fehler zurückgeben, so dass der Client weiß, dass es nichts gibt.Fehler zurückgeben, wenn Eintrag nicht in Firebase-Datenbank gefunden wurde

kehrt kein Fehler, wenn das Modul nicht funktioniert existiert:

"moduls": { 
    ".read": "true", 
    "$modul": { 

    } 
} 

kehrt Fehler, wenn die Daten nicht vorhanden ist, aber Fehler nicht gibt, wenn ich alle Module erhalten möchten:

"moduls": { 
    "$modul": { 
     ".read": "data.exists()", 
    } 
} 

So ist gibt es eine Möglichkeit, beide Fälle zu lösen, oder ist es besser, mit dem Kunden zu prüfen, ob ein bestimmter Wert wie folgt eingestellt ist:

Antwort

0

Sie scheinen Sicherheitsregeln zu verwenden, um clientseitige Logik zu steuern. Dies wird wahrscheinlich mehr Probleme verursachen, als es wert ist. Stattdessen: Verwenden Sie clientseitigen Code, um clientseitige Logik und Sicherheitsregeln zu steuern, die sicherstellen, dass Ihre Geschäftsregeln nicht verletzt werden.

Wenn Sie Ihre Geschäftslogik in etwas umformulieren können, das diesen Regeln entspricht, haben Sie eine viel einfachere Zeit. Zum Beispiel „kann jeder Benutzer ein Objekt erstellen, aber wenn es niemand erstellt wird, kann es überschreiben“ wird:

"moduls": { 
    "$modulId": { 
    ".write": "!data.exists() && newData.exists()", 
    } 
} 

und Client-Seite:

function createModul(modulId) { 
    var modulRef = ref.child('moduls').child(modulId); 
    modulRef.once('value', function(snapshot) { 
    if (snapshot.exists()) { 
     console.error('Modul with '+modulId+' already exists); 
    } 
    else { 
     modulRef.set('My new value', function(error) { 
     if (error) { 
      console.error('Write failed, probably somebody created '+modulId+' in the meantime') 
     } 
     }); 
    } 
    } 
} 

Nun prüft der Client seine eigene Geschäftslogik, und der Server stellt sicher, dass es nicht verletzt werden kann.

Verwandte Themen