Sök…


Introduktion

Det finns många skäl till att en läs- eller skrivoperation kan misslyckas. Ofta beror på att dina säkerhetsregler avvisar operationen, till exempel för att du inte är autentiserad (som standard kan en databas bara nås av en autentiserad användare) eller för att du skriver / lyssnar på en plats där du inte ha tillstånd.

Upptäck fel när du skriver ett värde på Android

Det finns många skäl till att en skrivoperation kan misslyckas. Ofta beror dina säkerhetsregler på åtgärden, till exempel för att du inte är autentiserad (som standard kan en databas bara nås av en autentiserad användare).

Du kan se dessa säkerhetsregelbrott i logcat-utdatorn. Men det är lätt att förbise dessa. Du kan också hantera dem i din egen kod och göra dem mer framträdande synliga, vilket är särskilt användbart under utvecklingen (eftersom dina JSON, regler och kod ändras ofta).

För att upptäcka en misslyckad skrivning på Android bifogar du en fullständig återuppringning till setValue :

ref.setValue("My new value", new DatabaseReference.CompletionListener() {
    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
        throw databaseError.toException();
    }
});

Att kasta ett sådant undantag säkerställer att det blir mycket svårt att förbise ett sådant fel nästa gång.

Upptäck fel när du läser data på Android

Ett ofta skäl till att din läsoperation kanske inte fungerar är att dina säkerhetsregler avvisar operationen, till exempel för att du inte är autentiserad (som standard kan en databas bara nås av en autentiserad användare).

Du kan se dessa säkerhetsregelbrott i logcat-utdatorn. Men det är lätt att förbise dessa. Du kan också hantera dem i din egen kod och göra dem mer framträdande synliga, vilket är särskilt användbart under utvecklingen (eftersom dina JSON, regler och kod ändras ofta).

För att upptäcka en misslyckad avläsning på Android måste du implementera onCancelled metoden för din ChildEventListener :

databaseRef.addChildEventListener(new ChildEventListener() {
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { ... }
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { ... }
    public void onChildRemoved(DataSnapshot dataSnapshot) { ... }
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { ... }
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
});

Eller om du har en ValueEventListener :

databaseRef.addValueEventListener(new ValueEventListener() {
    public void onDataChange(DataSnapshot dataSnapshot, String s) { ... }
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
});

Med denna kod på plats kommer det att vara ganska svårt att förbise ett säkerhetsfel när du läser data på Android.

Upptäck fel när du skriver ett värde på iOS

Det finns många skäl till att en skrivoperation kan misslyckas. Ofta beror dina säkerhetsregler på åtgärden, till exempel för att du inte är autentiserad (som standard kan en databas bara nås av en autentiserad användare).

Du kan se dessa överträdelser av säkerhetsregeln i utgången från ditt program. Men det är lätt att förbise dessa. Du kan också hantera dem i din egen kod och göra dem mer framträdande synliga, vilket är särskilt användbart under utvecklingen (eftersom dina JSON, regler och kod ändras ofta).

För att upptäcka en misslyckad skrivning på iOS bifogar du ett kompletteringsblock till setValue :

let message = ["name": "puf", "text": "Hello from iOS"]
ref!.childByAutoId().setValue(message) { (error) in
    print("Error while writing message \(error)")
}

Att kasta ett sådant undantag säkerställer att det blir mycket svårt att förbise ett sådant fel nästa gång.

Upptäcka fel när du läser data i JavaScript

Ett ofta skäl till att din läsoperation kanske inte fungerar är att dina säkerhetsregler avvisar operationen, till exempel för att du inte är autentiserad (som standard kan en databas bara nås av en autentiserad användare).

Du kan se dessa överträdelser av säkerhetsregeln i JavaScript-konsolen i din webbläsare. Men det är lätt att förbise dessa. Du kan också hantera dem i din egen kod och göra dem mer framträdande synliga, vilket är särskilt användbart under utvecklingen (eftersom dina JSON, regler och kod ändras ofta).

För att upptäcka en misslyckad läsning i JavaScript måste du lägga till en andra återuppringning till din on() -klausul:

ref.on('value', function(snapshot) {
    console.log(snapshot.key, snapshot.val());
}, function(error) {
    alert(error);
})

Med den här koden på plats kommer det att vara ganska svårt att förbise ett säkerhetsfel när du läser data i JavaScript.

Upptäcker fel när du skriver ett värde i JavaScript

Det finns många skäl till att en skrivoperation kan misslyckas. Ofta beror dina säkerhetsregler på åtgärden, till exempel för att du inte är autentiserad (som standard kan en databas bara nås av en autentiserad användare).

Du kan se dessa säkerhetsregelbrott i konsolutgången. Men det är lätt att förbise dessa. Du kan också hantera dem i din egen kod och göra dem mer framträdande synliga, vilket är särskilt användbart under utvecklingen (eftersom dina JSON, regler och kod ändras ofta).

För att upptäcka en misslyckad skrivning i JavaScript bifogar du en återuppringning för att set :

ref.set("My new value").catch(function(error)
    console.error(error);
    alert(error);
});

Att visa en varning som denna garanterar att det blir mycket svårt att förbise ett sådant fel nästa gång.

Upptäck fel när du läser data på iOS

Ett ofta skäl till att din läsoperation kanske inte fungerar är att dina säkerhetsregler avvisar operationen, till exempel för att du inte är autentiserad (som standard kan en databas bara nås av en autentiserad användare).

Du kan se dessa säkerhetsregelbrott i konsolutgången. Men det är lätt att förbise dessa. Du kan också hantera dem i din egen kod och göra dem mer framträdande synliga, vilket är särskilt användbart under utvecklingen (eftersom dina JSON, regler och kod ändras ofta).

För att upptäcka en misslyckad avläsning på iOS måste du implementera withCancel blocket för din observatör:

    ref!.child("notAllowed").observe(.value, with: { (snapshot) in
        print("Got non-existing value: \(snapshot.key)")
    }, withCancel: { (error) in
        print(error)
    })


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow