Maison > développement back-end > Golang > Comment remplir automatiquement les champs Created_at et Updated_at dans MongoDB à l'aide du BSON Marshaler de Go ?

Comment remplir automatiquement les champs Created_at et Updated_at dans MongoDB à l'aide du BSON Marshaler de Go ?

DDD
Libérer: 2024-11-24 20:35:14
original
918 Les gens l'ont consulté

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

Création automatisée des champs Created_at et Updated_at dans MongoDB à l'aide du pilote de base de données Go

Dans Go, lors de l'utilisation du pilote de base de données MongoDB, le Created_at et les champs update_at dans une structure ne sont pas automatiquement renseignés avec des horodatages lors des insertions. Pour résoudre ce problème, un marshaleur personnalisé peut être implémenté pour mettre à jour ces champs avant d'enregistrer la structure dans MongoDB.

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

La méthode MarshalBSON() est appelée lors de l'enregistrement des valeurs de type *User et garantit que le Les champs créé_at et mis à jour_at sont définis sur l'heure actuelle avant le marshalage de l'objet dans une représentation BSON.

Pour utiliser ce marshaleur personnalisé, instanciez un pointeur vers votre objet User et insérez-le dans la collection MongoDB :

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 implémentant la méthode MarshalBSON(), vous pouvez générer automatiquement des horodatages pour les champs Created_at et Updated_at lors de l'enregistrement d'une structure Go dans MongoDB, garantissant ainsi que les champs sont correctement renseignés avec l'heure actuelle.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal