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?

Wie fülle ich die Felder Created_at und Updated_at in MongoDB mithilfe des BSON Marshaler von Go automatisch aus?

DDD
DDDOriginal
2024-11-24 20:35:14923Durchsuche

How to Automatically Populate Created_at and Updated_at Fields in MongoDB using Go's BSON Marshaler?

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!

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