Bagaimana untuk Mengekalkan Nilai Kosong dalam Kemas Kini MongoDB Menggunakan `omitempty` Golang?

DDD
Lepaskan: 2024-11-23 10:23:14
asal
633 orang telah melayarinya

How to Preserve Empty Values in MongoDB Updates Using Golang's `omitempty`?

Cara Mengendalikan Nilai Kosong dalam Kemas Kini MongoDB dengan "omitempty" dalam Struktur Golang

Pengenalan

Struktur Golang dengan medan "omitempty" membenarkan pemetaan JSON terpilih nilai ke dalam struktur, tidak termasuk medan dengan nilai kosong. Walau bagaimanapun, ini boleh membawa kepada cabaran apabila mengemas kini dokumen MongoDB, kerana nilai kosong mungkin tidak ditunjukkan dalam pangkalan data.

Masalah

Apabila menggunakan struktur dengan "penghilangan" bendera untuk memetakan nilai borang JSON, medan kosong diabaikan. Ini menimbulkan isu semasa mengemas kini dokumen dalam MongoDB:

  • Jika kotak semak yang ditandakan sebelum ini dinyahtanda semasa kemas kini, nilai kosong tidak dipetakan ke dalam struktur dan tidak boleh disimpan ke pangkalan data.
  • Sebaliknya, dalam kemas kini REST API, hanya menyediakan nilai yang diperlukan boleh mengatasi nilai medan lain dalam pangkalan data, walaupun nilai medan yang tidak sepatutnya berubah.

Keperluan

Mengekalkan bendera "kehilangan" sambil mengekalkan keupayaan untuk menyimpan nilai kosong atau dikemas kini dalam MongoDB adalah penting untuk kemas kini yang fleksibel dan mantap proses.

Penyelesaian

Untuk menyelesaikan isu ini, tukar medan yang terjejas dalam struktur kepada penunjuk:

type Coupon struct {
    Id               *int    `json:"id,omitempty" bson:"_id,omitempty"`
    Name             string `json:"name,omitempty" bson:"name,omitempty"`
    Code             string `json:"code,omitempty" bson:"code,omitempty"`
    Description      string `json:"description,omitempty" bson:"description,omitempty"`
    Status           *bool   `json:"status" bson:"status"`
    MaxUsageLimit    *int    `json:"max_usage_limit,omitempty" bson:"max_usage_limit,omitempty"`
    SingleUsePerUser *bool   `json:"single_use_per_user,omitempty" bson:"single_use_per_user,omitempty"`
}
Salin selepas log masuk

Dengan cara ini:

  • Penunjuk sifar mewakili medan yang ditinggalkan.
  • A penunjuk bukan sifar kepada nilai sifar mewakili medan kosong.
  • Penunjuk bukan sifar kepada nilai bukan sifar menetapkan medan kepada nilai yang ditentukan.

Dengan menggunakan penunjuk , kami membolehkan fleksibiliti untuk mengendalikan kedua-dua nilai kosong dan kemas kini dalam kemas kini MongoDB sambil mengekalkan gelagat "mengabaikan".

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Nilai Kosong dalam Kemas Kini MongoDB Menggunakan `omitempty` Golang?. 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