Heim >Backend-Entwicklung >Golang >Wie lege ich Standarddatumswerte für Time.Time-Felder in MGO-Dokumenten fest?
In MongoDB ist es möglich, Standardwerte für Dokumentfelder festzulegen. Dies kann nützlich sein, um Felder während der Dokumenterstellung automatisch mit bestimmten Werten zu füllen, beispielsweise ein Zeitstempelfeld.
In Mgo, dem Go-Treiber für MongoDB, gibt es keine direkte Möglichkeit zur Definition Standardwerte für Felder wie im Mongoose-JavaScript-Modell. Entwickler suchen nach einer Lösung, um bei der Erstellung automatisch einen Datums- oder Zeitwert in das Feld eines Dokuments einzufügen.
Es gibt zwei Hauptansätze zum Festlegen von Standarddatumswerten in Mgo:
Konstruktorfunktion:
Benutzerdefiniert Marshalling:
Für den benutzerdefinierten Marshalling-Ansatz finden Sie hier eine Beispielimplementierung:
import ( "context" "time" "github.com/globalsign/mgo/bson" ) type User struct { CreatedAt time.Time `json:"created_at" bson:"created_at"` } func (u *User) GetBSON() (interface{}, error) { if u.CreatedAt.IsZero() { u.CreatedAt = time.Now() } type my *User return my(u), nil } func main() { session, err := mgo.Dial("localhost:27017") if err != nil { panic(err) } defer session.Close() c := session.DB("mydb").C("users") // Create a new user with a default CreatedAt timestamp user := User{} err = c.Insert(user) if err != nil { panic(err) } }
Wenn in diesem Beispiel ein neues Benutzerdokument in die Datenbank eingefügt wird, wird das Feld „CreatedAt“ automatisch auf die aktuelle Zeit gesetzt. Dies wird erreicht, indem die GetBSON()-Methode überschrieben wird, um einen geänderten Strukturwert bereitzustellen, wenn der Datenbanktreiber versucht, das Objekt zum Einfügen zu serialisieren.
Das obige ist der detaillierte Inhalt vonWie lege ich Standarddatumswerte für Time.Time-Felder in MGO-Dokumenten fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!