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
DDDoriginal
2024-11-24 20:35:14923parcourir

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))
}

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
}

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!

Déclaration:
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