Maison > développement back-end > Golang > Pourquoi mes requêtes de banque de données Google App Engine ne sont-elles pas filtrées correctement ?

Pourquoi mes requêtes de banque de données Google App Engine ne sont-elles pas filtrées correctement ?

Susan Sarandon
Libérer: 2024-12-07 05:27:13
original
581 Les gens l'ont consulté

Why Aren't My Google App Engine Datastore Queries Filtering Correctly?

Filtrer une requête GAE

Lorsque vous tentez de filtrer une requête GAE, un problème courant survient lorsque le filtre semble inefficace. Pour résoudre ce problème, il est essentiel de comprendre comment fonctionne la méthode Query.Filter().

La méthode Query.Filter() renvoie une requête dérivée qui inclut le filtre spécifié. Cependant, il est crucial d'attribuer la valeur de retour à une nouvelle variable pour préserver le filtre :

q = datastore.NewQuery("employee").Filter("Name =", "Andrew W")
Copier après la connexion

Alternativement, le nouveau filtrage peut être réalisé en une seule ligne :

q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")
Copier après la connexion

Sans À cette étape, la requête exécutée n'aura aucun filtre, ce qui entraînera la récupération de toutes les entités « employé » enregistrées. Par conséquent, « Joe Citizen » pourrait être la première entité imprimée.

De plus, une éventuelle cohérence doit être prise en compte. Après avoir effectué une opération Put(), la requête suivante peut ne pas voir immédiatement les résultats attendus en raison de l'utilisation du SDK de développement. Pour pallier ce problème, un time.Sleep() peut être introduit avant d'exécuter la requête :

time.Sleep(time.Second)
q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")
Copier après la connexion

En production, une forte cohérence peut être simulée en créant un contexte avec l'option suivante :

c, err := aetest.NewContext(&aetest.Options{StronglyConsistentDatastore: true})
Copier après la connexion

Cependant, il est important de noter que les clés ancêtres doivent être utilisées pour obtenir des résultats fortement cohérents en production.

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal