Heim >Backend-Entwicklung >Golang >Wie gehe ich mit nicht vorhandenen Zeilen in der Löschfunktion von GORM um?

Wie gehe ich mit nicht vorhandenen Zeilen in der Löschfunktion von GORM um?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 10:26:301075Durchsuche

How to Handle Non-Existent Rows in GORM's Delete Function?

Umgang mit Fehlern in der Löschfunktion von GORM

Bei der Arbeit mit Datenbanklöschungen mithilfe von GORM ist es wichtig zu überlegen, wie Sie mit nicht vorhandenen Datenbanken umgehen möchten Reihen. Standardmäßig gibt GORM keinen Fehler aus, wenn versucht wird, eine nicht vorhandene Zeile zu löschen. Stattdessen bleibt das Feld „result.Error“ null.

Um dieses Verhalten zu ändern und einen Fehler für nicht vorhandene Zeilen zurückzugeben, müssen Sie das Feld „RowsAffected“ überprüfen. So können Sie Ihre Funktion „DeleteCategory“ ändern:

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

In dieser geänderten Funktion:

  1. GORMs Methode „Löschen“ wird aufgerufen und weist das Ergebnis der Datenbank zu.
  2. Wenn db.Error nicht Null ist, wird ein Fehler zurückgegeben.
  3. Nachdem bestätigt wurde, dass kein allgemeiner Fehler vorliegt, wird db.RowsAffected überprüft. Wenn er kleiner als 1 ist, was darauf hinweist, dass vom Löschvorgang keine Zeilen betroffen waren, wird eine benutzerdefinierte Fehlermeldung zurückgegeben.
  4. Ein Null-Fehlerwert wird zurückgegeben, wenn das Löschen der Zeile erfolgreich war.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit nicht vorhandenen Zeilen in der Löschfunktion von GORM um?. 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