Heim >Backend-Entwicklung >Golang >Wie gehe ich mit GORM-Löschfehlern um, wenn der Datensatz nicht vorhanden ist?

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

DDD
DDDOriginal
2024-11-01 04:18:27521Durchsuche

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>

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>

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!

Stellungnahme:
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