Heim > Backend-Entwicklung > Golang > Wie definiere ich Standarddaten in MongoDB-Dokumenten mit Go's Mgo?

Wie definiere ich Standarddaten in MongoDB-Dokumenten mit Go's Mgo?

Mary-Kate Olsen
Freigeben: 2024-11-22 17:03:53
Original
1048 Leute haben es durchsucht

How to Define Default Dates in MongoDB Documents Using Go's Mgo?

Standarddaten in Mongo-Dokumenten mit Go's Mgo definieren

In MongoDB ist es üblich, Standardzeitstempel für Dokumentfelder zu definieren. In Go with Mgo gibt es jedoch keine direkte Möglichkeit, Standardwerte für Felder festzulegen.

Benutzerdefinierter Konstruktor mit Standardwert

Ein Ansatz besteht darin, eine benutzerdefinierte Konstruktorfunktion zu erstellen, die den Standardwert ausfüllt:

func NewUser() *User {
    return &User{
        CreatedAt: time.Now(),
    }
}
Nach dem Login kopieren

Dadurch wird sichergestellt, dass jede neue Benutzerstruktur, die mit diesem Konstruktor erstellt wird, über ein standardmäßiges CreatedAt verfügt Feld.

Benutzerdefinierter GetBSON-Marshaler

Eine weitere Option besteht darin, eine benutzerdefinierte Serialisierungslogik mithilfe der bson.Getter-Schnittstelle von BSON zu implementieren:

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

Beim Marshalling des Benutzers an BSON ist dies der Fall Die Funktion „GetBSON“ wird aufgerufen und füllt das Feld „CreatedAt“ mit der aktuellen Uhrzeit, sofern dies noch nicht geschehen ist festgelegt.

Überlegungen

Beachten Sie, dass bei beiden Ansätzen das Feld „CreatedAt“ mit der aktuellen Zeit überschrieben wird, selbst wenn ein vorhandenes Dokument aktualisiert wird. Um dies zu vermeiden, können Sie in GetBSON eine Prüfung hinzufügen, um das Feld nur dann festzulegen, wenn es den Nullwert hat.

Zusätzlich erfordert der benutzerdefinierte Marshalling-Ansatz, dass Sie bson.Getter für jeden Typ implementieren, der eine time.Time enthält Feld mit einem Standardwert.

Das obige ist der detaillierte Inhalt vonWie definiere ich Standarddaten in MongoDB-Dokumenten mit Go's Mgo?. 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