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
Susan Sarandonoriginal
2024-12-07 05:27:13527parcourir

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")

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

q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")

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")

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

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:
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