2016-03-27 20 views
1

Ich bin neu in der Verwendung von Realm-Datenbanken mit react-native und während die Dokumentation/API im Allgemeinen die Dinge klar genug erscheinen lässt (was übrigens sehr geschätzt wird), sehe ich nirgendwo in der API, wenn ich versuche zu ändern (Erstellen, Aktualisieren, Löschen) Eine db-Tabelle in einem Realm Ich kann eine Methode hinzufügen, um Erfolg oder Misserfolg zu verfolgen und in Art antworten. Ist es da und ich sehe es einfach nicht oder gibt es einen Weg, von dem erwartet wird, dass ich damit umgehe, abgesehen davon, dass ich einen Callback als Argument anlege?Wie kann ich feststellen, ob ein Realm erfolgreich aktualisiert wurde?

Antwort

3

Fehler in Realm führen dazu, dass Exceptions geworfen werden, sodass Sie Fehler mit try/catch-Blöcken behandeln können. Realm.create und Realm.delete sollten nur ausgelöst werden, wenn Sie einen logischen Fehler in Ihrem Code haben. Realm.write könnte ausgelöst werden, wenn beim Versuch, die Datenbank auf die Festplatte zu schreiben, ein Fehler auftritt.

Sie könnten leicht Ihren eigenen Wrapper erstellen, so dass Sie lieber in einem Rückruf für Erfolg/Fehler passieren könnten, als einen try/catch-Block für jeden Schreib zu schreiben:

function writeWithError(realm, writeCallback, errorCallback) { 
    try { 
     realm.write(writeCallback); 
     errorCallback(undefined); 
    } 
    catch(e) { 
     errorCallback(e); 
    } 
} 

Das Beispiel ruft den Fehler-Callback mit undefined bei Erfolg oder mit dem Fehler, wenn ein Fehler ausgelöst wurde. Sie könnten auch versuchen, Object.defineProperty zu verwenden, um dies an das Objekt Realm anzuhängen, damit Sie es als eine Mitgliedsfunktion aufrufen können.

+1

Vielen Dank für Ihre Antwort. Ich glaube jedoch nicht, dass ein Fehler/eine Ausnahme, die dabei erwischt wird, wirklich ein guter Indikator für den Erfolg ist. Was meine erste Frage war, war auch, dass ich Erfolg oder Misserfolg nachverfolgen und in gleicher Weise antworten konnte. Und ich wollte, dass ich etwas betonen möchte: "antworte in Form von Sachleistungen". Weißt du, ob es eine Möglichkeit gibt, eine Callback-Funktion oder eine Callback-Funktion zu verwenden? – flyingace

+1

Ich änderte meine Antwort mit einem Beispiel, wie Sie schreiben können, um Fehlerrückrufe zu unterstützen. – Ari

+1

Ich schätze deine Antwort und werde nur weiter darauf eingehen, weil du anscheinend eine Reihe anderer Realm-Fragen beantwortet hast und ich denke, dass du wahrscheinlich für Realm arbeitest. Wenn ich mich irre, bitte entschuldige meine Aufdringlichkeit. Das Hauptproblem, das ich mit der zusätzlichen try/catch-Anweisung habe, ist, dass es "writeCallback" als Argument für realm.write enthält, aber realm.write erwartet hier bereits einen Funktionsaufruf gemäß der Spezifikation: realm.write (() => { realm.create ('Auto', {Marke: 'Honda', Modell: 'Accord', Laufwerk: 'awd'}); }); – flyingace

Verwandte Themen