Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich ein Standarddatum und eine Standardzeit für ein Feld in einem Go Mongoose-Dokument festlegen?

Wie kann ich ein Standarddatum und eine Standardzeit für ein Feld in einem Go Mongoose-Dokument festlegen?

Susan Sarandon
Susan SarandonOriginal
2024-11-23 02:07:11387Durchsuche

How Can I Set a Default Date and Time for a Field in a Go Mongoose Document?

Standarddatum beim Einfügen eines Dokuments mit Time.Time-Feld festlegen

In mongoose ist das Festlegen eines Standardwerts für ein Datumsfeld einfach, aber In Go mit mgo sind die Dinge etwas anders.

Warum können Sie keine Standardwerte für Felder festlegen? Los?

Go lässt keine Standardwerte für Felder zu. Bei der Erstellung haben sie den Nullwert ihres Typs.

Lösung 1: Konstruktorähnliche Funktion

Ein Ansatz besteht darin, eine konstruktorähnliche Funktion zu erstellen Initialisiert das CreatedAt-Feld. Es werden jedoch keine Fälle behandelt, in denen der Zeitstempel mit dem Zeitstempel der Datenbank übereinstimmen muss.

Lösung 2: Benutzerdefinierte Marshalling-Logik

Eine bessere Lösung beinhaltet die Implementierung von benutzerdefiniertem BSON. Getter-Logik.

GetBSON() Funktion

Die Funktion GetBSON() in der Go-Implementierung stellt einen zu speichernden Wert bereit. In diesem Fall möchten wir das Feld „CreatedAt“ vor dem Speichern auf die aktuelle Zeit setzen.

func (u *User) GetBSON() (interface{}, error) {
    u.CreatedAt = time.Now()
    type my *User
    return my(u), nil
}

Neuen Typ erstellen

Beachten Sie, dass ein neuer Typ, my , wird erstellt und zurückgegeben, um eine endlose Rekursion zu verhindern.

Umgang mit Vorhandenem Datensätze

Durch das Hinzufügen einer Prüfung wird sichergestellt, dass das Feld „CreatedAt“ nur dann festgelegt wird, wenn es den Nullwert hat, wodurch Überschreibungen vorhandener Datensätze verhindert werden:

func (u *User) GetBSON() (interface{}, error) {
    if u.CreatedAt.IsZero() {
        u.CreatedAt = time.Now()
    }
    type my *User
    return my(u), nil
}

Das obige ist der detaillierte Inhalt vonWie kann ich ein Standarddatum und eine Standardzeit für ein Feld in einem Go Mongoose-Dokument festlegen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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