Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mengendalikan Ralat Padam GORM Apabila Rekod Tidak Wujud?

Bagaimana Mengendalikan Ralat Padam GORM Apabila Rekod Tidak Wujud?

DDD
DDDasal
2024-11-01 04:18:27409semak imbas

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

Mengendalikan Ralat Padam GORM

Dalam Go, menggunakan pustaka GORM untuk melaksanakan operasi pangkalan data adalah amalan biasa. Satu ciri GORM ialah keupayaan untuk memadam rekod daripada pangkalan data. Walau bagaimanapun, menghadapi ralat semasa pemadaman adalah mungkin, dan pengendaliannya dengan sewajarnya adalah penting.

Pertimbangkan fungsi berikut untuk memadamkan kategori daripada pangkalan data menggunakan 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>

Fungsi ini cuba memadam satu baris dalam pangkalan data dengan id yang ditentukan. Apabila baris berjaya dipadamkan, GORM mengembalikan tiada hasil. Ralat. Walau bagaimanapun, jika ralat berlaku, GORM juga mengembalikan sifar dalam hasil. Ralat.

Satu senario tertentu di mana kekurangan maklumat ralat ini boleh menimbulkan masalah ialah apabila cuba memadamkan baris yang tidak wujud. Memandangkan GORM menganggap ini sebagai operasi yang berjaya (kerana tiada baris yang terjejas), ia mengembalikan tiada hasil. Ralat. Dalam kes sedemikian, mungkin lebih sesuai untuk mengembalikan ralat untuk menunjukkan bahawa percubaan pemadaman gagal disebabkan oleh ketiadaan rekod.

Untuk menyelesaikan isu ini, anda boleh menyemak medan RowsAffected hasil GORM untuk menentukan sama ada sebarang baris telah dipadamkan. Jika sifar baris terjejas, ini bermakna rekod dengan id yang ditentukan tidak wujud dalam pangkalan data dan anda boleh mengembalikan mesej ralat yang sesuai. Berikut ialah versi terkini fungsi 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>

Dengan pengubahsuaian ini, fungsi itu kini akan mengendalikan dengan betul kes di mana rekod yang ditentukan tidak wujud dan mengembalikan ralat dengan mesej yang jelas.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Ralat Padam GORM Apabila Rekod Tidak Wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn