Maison > développement back-end > Golang > Comment ajouter automatiquement les horodatages Created_at et Updated_at aux documents MongoDB à l'aide de Go ?

Comment ajouter automatiquement les horodatages Created_at et Updated_at aux documents MongoDB à l'aide de Go ?

Susan Sarandon
Libérer: 2024-11-26 08:29:08
original
661 Les gens l'ont consulté

How to Automatically Add Created_at and Updated_at Timestamps to MongoDB Documents Using Go?

Ajout de champs Created_at et Updated_at automatisés dans Golang Struct pour MongoDB

L'insertion de données dans MongoDB avec une structure Go nécessite de gérer le remplissage automatique de create_at et les champs update_at, une fonctionnalité non intrinsèquement prise en charge par MongoDB serveur.

Pour résoudre ce problème, envisagez d'implémenter un marshaleur personnalisé en implémentant l'interface bson.Marshaler. La fonction MarshalBSON() sera invoquée lors de la persistance d'une valeur de type Utilisateur.

Voici un extrait de code démontrant l'implémentation :

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))
}
Copier après la connexion

Notez que la méthode MarshalBSON() utilise un pointeur récepteur, il est donc nécessaire d'utiliser un pointeur vers l'instance User.

Exemple utilisation :

user := &User{Name: "username"}

c := client.Database("db").Collection("collection")
if _, err := c.InsertOne(context.Background(), user); err != nil {
    // handle error
}
Copier après la connexion

En employant cette technique, vous pouvez automatiquement mettre à jour les champs create_at et update_at lors de l'insertion ou de la mise à jour d'un document MongoDB via la structure Go.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal