ホームページ > バックエンド開発 > Golang > Google App Engine データストア クエリが正しくフィルタリングされないのはなぜですか?

Google App Engine データストア クエリが正しくフィルタリングされないのはなぜですか?

Susan Sarandon
リリース: 2024-12-07 05:27:13
オリジナル
469 人が閲覧しました

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

GAE クエリのフィルタリング

GAE クエリをフィルタリングしようとすると、フィルタが効果がないと思われるときに一般的な問題が発生します。この問題に対処するには、Query.Filter() メソッドがどのように動作するかを理解することが重要です。

Query.Filter() メソッドは、指定されたフィルターを含む派生クエリを返します。ただし、フィルターを保持するには、戻り値を新しい変数に代入することが重要です。

q = datastore.NewQuery("employee").Filter("Name =", "Andrew W")
ログイン後にコピー

または、新しいフィルター処理は 1 行で実現できます。

q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")
ログイン後にコピー

Withoutこのステップでは、実行されたクエリにはフィルターがないため、保存されているすべての「従業員」エンティティが取得されます。その結果、「Joe Citizen」が最初に印刷されるエンティティになる可能性があります。

さらに、最終的な整合性を考慮する必要があります。 Put() 操作を実行した後、開発 SDK を使用しているため、後続のクエリで予期した結果がすぐに表示されない場合があります。この問題を軽減するために、クエリを実行する前に time.Sleep() を導入できます:

time.Sleep(time.Second)
q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")
ログイン後にコピー

実稼働環境では、次のオプションを使用してコンテキストを作成することで強整合性をシミュレートできます:

c, err := aetest.NewContext(&aetest.Options{StronglyConsistentDatastore: true})
ログイン後にコピー

ただし、本番環境で強い一貫性のある結果を得るには、祖先キーを利用する必要があることに注意することが重要です。

以上がGoogle App Engine データストア クエリが正しくフィルタリングされないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート