Lors de la migration du code d'un package de signes global vers le pilote go mongo, comprendre le l'utilisation de context.TODO() et context.Background() est cruciale.
Background()
Selon la documentation, context.Background() renvoie un non -nil, vide Contexte avec les caractéristiques suivantes :
Il est couramment utilisé dans la fonction principale, l'initialisation et les tests. Lorsqu'aucun contexte significatif n'est disponible, context.Background() fournit une solution de secours.
TODO()
context.TODO() renvoie également un résultat vide et non nul. Contexte. Cependant, son utilisation prévue est spécifiquement lorsqu'il n'est pas clair quel contexte utiliser ou lorsqu'un contexte n'est pas encore disponible. En utilisant context.TODO(), vous pouvez explicitement documenter que vous avez besoin d'un contexte mais que vous n'en avez pas actuellement de spécifique.
Bonnes pratiques
Exemple d'utilisation
Considérez le scénario suivant où un gestionnaire HTTP doit exécuter une requête MongoDB dans un délai spécifique :
ctx, cancel := context.WithTimeout(r.Context(), 6 * time.Second) defer cancel() // ctx automatically times out after 6 seconds curs, err := c.Find(ctx, bson.M{"some": "filter"})
Dans cet exemple, context.WithTimeout() crée un nouveau contexte qui dérive du contexte de la requête (r.Context()) . Si l'opération MongoDB dépasse 6 secondes, le contexte expire, signalant que la requête doit être annulée.
Conclusion
Choisir entre context.TODO() et context. Background() consiste à comprendre les scénarios d'utilisation spécifiques et à s'assurer que vous fournissez un contexte significatif et approprié aux fonctions en aval.
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!