Maison > développement back-end > Golang > Comment définir une date et une heure par défaut pour l'insertion d'un document dans Go ?

Comment définir une date et une heure par défaut pour l'insertion d'un document dans Go ?

Linda Hamilton
Libérer: 2024-12-08 04:15:14
original
1041 Les gens l'ont consulté

How to Set a Default Date and Time on Document Insertion in Go?

Définition de la date par défaut lors de l'insertion du document avec le champ Time.Time dans Go

Dans Go, contrairement à Mongoose dans Node.js, les valeurs par défaut ne peuvent pas être affecté aux champs dans les définitions de structure. Pour obtenir le même résultat, plusieurs approches sont disponibles.

Une méthode consiste à créer une fonction de type constructeur qui instancie une nouvelle structure et définit le champ CreatedAt à l'heure actuelle. Cette fonction peut ensuite être utilisée pour créer de nouveaux utilisateurs, en garantissant que le champ est défini de manière cohérente.

func NewUser() *User {
    return &User{
        CreatedAt: time.Now(),
    }
}
Copier après la connexion

Cependant, cette approche présente des limites car elle nécessite le strict respect de l'utilisation de cette fonction pour créer de nouveaux utilisateurs et ne capture pas l'horodatage de l'insertion du document.

Une solution plus polyvalente consiste à implémenter une logique de marshaling personnalisée en implémentant l'interface bson.Getter. La méthode GetBSON() permet de modifier la valeur stockée dans la base de données.

type User struct {
    CreatedAt time.Time `json:"created_at" bson:"created_at"`
}

func (u *User) GetBSON() (interface{}, error) {
    if u.CreatedAt.IsZero() {
        u.CreatedAt = time.Now()
    }
    type my *User
    return my(u), nil
}
Copier après la connexion

Cette méthode vérifie si le champ CreatedAt est vide et le définit à l'heure actuelle si c'est le cas. Elle évite également le débordement de pile en renvoyant un nouveau type qui n'implémente pas l'interface bson.Getter.

Cette approche garantit que le champ CreatedAt est automatiquement mis à jour à chaque fois qu'un document est enregistré, sans l'écraser si le champ contient déjà une valeur. Il offre une plus grande flexibilité et s'aligne sur le comportement attendu en matière de définition des valeurs par défaut lors de l'insertion du document.

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