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