Heim > Backend-Entwicklung > Golang > Wie gehe ich mit Datumskonvertierungen um, wenn ich von Go aus auf MongoDB zugreife?

Wie gehe ich mit Datumskonvertierungen um, wenn ich von Go aus auf MongoDB zugreife?

Mary-Kate Olsen
Freigeben: 2024-11-23 11:00:56
Original
540 Leute haben es durchsucht

How to Handle Date Conversions When Accessing MongoDB from Go?

Zugriff auf MongoDB von Go aus: Arbeiten mit Datumsangaben

Beim Zugriff auf MongoDB von Go aus kann es vorkommen, dass Sie Datentypen konvertieren müssen, z. B. bei der Handhabung von Datumsangaben, die als gespeichert sind Zeichenfolgen in MongoDB, die jedoch als Go time.Time-Objekte erforderlich sind. So beheben Sie dieses Problem:

Benutzerdefinierte Marshal-/Unmarshal-Logik

Um Typkonvertierungen während des Marshallings/Unmarshalings zwischen MongoDB und Go zu verarbeiten, implementieren Sie benutzerdefinierte Logik mithilfe der Schnittstellen bson.Getter und bson.Setter.

Anpassen von clientConfigData

Erweitern Sie zunächst clientConfigData um ein zusätzliches Feld EndDate vom Typ time.Time:

type clientConfigData struct {
    SMTPAssoc  int       `bson:"smtp_assoc"`
    PlanType   string    `bson:"plan_type"`
    EndDateStr string    `bson:"end_date"`
    EndDate    time.Time `bson:"-"`
}
Nach dem Login kopieren

Benutzerdefinierte Logik implementieren

Benutzerdefinierte Marshal-/Unmarshal-Logik in den Methoden SetBSON() und GetBSON() implementieren:

const endDateLayout = "2006-01-02 15:04:05"

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
}
Nach dem Login kopieren

Erläuterung

  • SetBSON(): Analysiert das EndDateStr-Feld und legt fest EndDate-Feld als time.Time.
  • GetBSON(): Konvertiert EndDate vor dem Speichern in eine Zeichenfolge im angegebenen Format.

Stapelüberlauf vermeiden

Um Stapel zu vermeiden Überlauf: Erstellen Sie innerhalb beider Methoden einen neuen Zwischentyp, der eine Konvertierung ohne endlose Rekursion ermöglicht.

Dieses benutzerdefinierte Marshalling und Unmarshaling Mit der Logik können Sie Datumsangaben zwischen Zeichenfolgen- und Zeitformaten konvertieren, wenn Sie von Go aus auf MongoDB zugreifen.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Datumskonvertierungen um, wenn ich von Go aus auf MongoDB zugreife?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage