Mengakses MongoDB daripada Go: Menukar MongoDB String Date to Go Time
Coretan kod anda mendedahkan bahawa anda sedang mengakses MongoDB daripada Go dan menemui cabaran dalam menukar tarikh rentetan MongoDB kepada Masa Pergi. Struktur clientConfigData yang disediakan termasuk medan EndDate yang diisytiharkan sebagai rentetan, sepadan dengan format storan MongoDB. Walau bagaimanapun, anda perlu mengakses tarikh ini sebagai nilai Masa Pergi.
Marshaling dan Unmarshaling Tersuai
Untuk mencapai penukaran ini, pertimbangkan untuk melaksanakan logik marshaling dan unmarshaling tersuai. Dengan melaksanakan antara muka bson.Getter dan bson.Setter, anda mendapat kawalan ke atas transformasi nilai semasa proses marshaling dan unmarshaling.
Struktur clientConfigData Extended
Lanjutkan struct clientConfigData untuk memasukkan medan TamatTarikh tambahan bagi masa jenis.Masa (jenis nilai yang diingini):
type clientConfigData struct { SMTPAssoc int `bson:"smtp_assoc"` PlanType string `bson:"plan_type"` EndDateStr string `bson:"end_date"` EndDate time.Time `bson:"-"` // bson tag "-" excludes this field from MongoDB }
Fungsi Marshaling dan Unmarshaling Tersuai
Tentukan fungsi marshaling dan unmarshaling tersuai untuk struct clientConfigData:
const endDateLayout = "2006-01-02 15:04:05" // Customizable date layout func (c *clientConfigData) SetBSON(raw bson.Raw) (err error) { type my clientConfigData if err = raw.Unmarshal((*my)(c)); err != nil { return } c.EndDate, err = time.Parse(endDateLayout, c.EndDateStr) return } func (c *clientConfigData) GetBSON() (interface{}, error) { c.EndDateStr = c.EndDate.Format(endDateLayout) type my *clientConfigData return my(c), nil }
Penjelasan
Menggunakan Medan Baharu
Kini, anda boleh menggunakan medan EndDate untuk mengakses tarikh sebagai nilai Go Time. Logik marshaling dan unmarshaling tersuai akan menukar secara automatik antara format rentetan dan masa apabila membaca dan menyimpan data ke MongoDB.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Tarikh Rentetan MongoDB kepada Masa Pergi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!