Wie gehe ich mit GORM-Löschfehlern um, wenn der Datensatz nicht vorhanden ist?

DDD
Freigeben: 2024-11-01 04:18:27
Original
420 Leute haben es durchsucht

How to Handle GORM Delete Errors When the Record Doesn't Exist?

Umgang mit GORM-Löschfehlern

In Go ist die Verwendung der GORM-Bibliothek zur Durchführung von Datenbankoperationen gängige Praxis. Eine Funktion von GORM ist die Möglichkeit, Datensätze aus einer Datenbank zu löschen. Es ist jedoch möglich, dass beim Löschen Fehler auftreten und diese entsprechend behandelt werden müssen.

Betrachten Sie die folgende Funktion zum Löschen einer Kategorie aus einer Datenbank mithilfe von GORM:

<code class="go">func DeleteCategory(id uint) error {
    var category Category
    category.ID = id
    result := db.Delete(&category)
    fmt.Println("result.Error: ", result.Error)
    return result.Error
}</code>
Nach dem Login kopieren

Diese Funktion versucht zu löschen eine Zeile in der Datenbank mit der angegebenen ID. Wenn eine Zeile erfolgreich gelöscht wurde, gibt GORM in result.Error Null zurück. Wenn jedoch ein Fehler auftritt, gibt GORM auch Null in result.Error zurück.

Ein besonderes Szenario, in dem dieser Mangel an Fehlerinformationen problematisch sein kann, ist der Versuch, eine nicht vorhandene Zeile zu löschen. Da GORM dies als erfolgreichen Vorgang betrachtet (da keine Zeilen betroffen waren), gibt es in result.Error Null zurück. In solchen Fällen ist es möglicherweise angemessener, einen Fehler zurückzugeben, um anzugeben, dass der Löschversuch aufgrund der Abwesenheit des Datensatzes fehlgeschlagen ist.

Um dieses Problem zu beheben, können Sie das Feld „RowsAffected“ des GORM-Ergebnisses überprüfen, um festzustellen, ob Alle Zeilen wurden gelöscht. Wenn keine Zeilen betroffen sind, bedeutet dies, dass der Datensatz mit der angegebenen ID nicht in der Datenbank vorhanden ist, und Sie können eine entsprechende Fehlermeldung zurückgeben. Hier ist eine aktualisierte Version der Funktion „DeleteCategory“:

<code class="go">func DeleteCategory(id uint) error {
    c := Category{ID: id}

    db := db.Delete(&c)
    if db.Error != nil {
        return db.Error
    } else if db.RowsAffected < 1 {
        return fmt.Errorf("row with id=%d cannot be deleted because it doesn't exist", id)
    }

    return nil
}</code>
Nach dem Login kopieren

Mit dieser Änderung behandelt die Funktion nun korrekt den Fall, in dem der angegebene Datensatz nicht vorhanden ist, und gibt einen Fehler mit einer eindeutigen Meldung zurück.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit GORM-Löschfehlern um, wenn der Datensatz nicht vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!