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 ?
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!