Bagaimana Mengendalikan Ralat Padam GORM Apabila Rekod Tidak Wujud?

DDD
Lepaskan: 2024-11-01 04:18:27
asal
426 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!