Heim >Backend-Entwicklung >Golang >Wie fülle ich die Felder Created_at und Updated_at in MongoDB mithilfe des BSON Marshaler von Go automatisch aus?
Automatisierte Erstellung von Created_at- und Updated_at-Feldern in MongoDB mithilfe des Go-Datenbanktreibers
In Go wird bei Verwendung des MongoDB-Datenbanktreibers das erstellte_at und die Felder „update_at“ in einer Struktur werden beim Einfügen nicht automatisch mit Zeitstempeln gefüllt. Um dieses Problem zu beheben, kann ein benutzerdefinierter Marshaller implementiert werden, der diese Felder aktualisiert, bevor die Struktur in MongoDB gespeichert wird.
type User struct { ID primitive.ObjectID `bson:"_id,omitempty"` CreatedAt time.Time `bson:"created_at"` UpdatedAt time.Time `bson:"updated_at"` Name string `bson:"name"` } func (u *User) MarshalBSON() ([]byte, error) { if u.CreatedAt.IsZero() { u.CreatedAt = time.Now() } u.UpdatedAt = time.Now() type my User return bson.Marshal((*my)(u)) }
Die Methode MarshalBSON() wird beim Speichern von Werten des Typs *User aufgerufen und stellt sicher, dass die Die Felder „created_at“ und „update_at“ werden auf die aktuelle Zeit gesetzt, bevor das Objekt in eine BSON-Darstellung gemarshallt wird.
Um diesen benutzerdefinierten Marshaller zu verwenden, instanziieren Sie einen Zeiger auf Ihren Benutzerobjekt und fügen Sie es in die MongoDB-Sammlung ein:
user := &User{Name: "username"} c := client.Database("db").Collection("collection") if _, err := c.InsertOne(context.Background(), user); err != nil { // handle error }
Durch die Implementierung der MarshalBSON()-Methode können Sie beim Speichern einer Go-Struktur in MongoDB automatisch Zeitstempel für die Felder „created_at“ und „update_at“ generieren und so sicherstellen, dass die Felder vorhanden sind ordnungsgemäß mit der aktuellen Uhrzeit ausgefüllt.
Das obige ist der detaillierte Inhalt vonWie fülle ich die Felder Created_at und Updated_at in MongoDB mithilfe des BSON Marshaler von Go automatisch aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!