1

GAEアプリをデプロイしましたが、次のような単純なクエリがあることに気付きました。

MBObject.query(MBObject.groupId == group.id).fetch()

groupIdndb.StringProperty(indexed=True)

私のindex.yamlファイルとGAEダッシュボード(appengine.google.com)のデータストアインデックスを見ると、このプロパティのインデックスはまったくリストされていません。これは通常、アップロードする前にアプリ全体を開発モードでテストしなかったことを意味する可能性があるため、手動でインデックスを挿入する必要があります。

ただし、クエリは問題なく機能します。それは私がうまく望むすべてのオブジェクトを返します。私が疑問に思っているのは、これがどのように可能かということです。groupIdを介してもクエリが実行されるのは、index.yamlにもダッシュボードにも表示されないのはなぜですか?エラーが発生するのではないでしょうか。

4

1 に答える 1

5

GAEはすべてのエンティティに自動的にインデックスを付けます。クエリは、1つのプロパティのみでクエリを実行するため、特定のインデックス定義は必要ありませんindex.yaml(複数のプロパティでクエリを実行しても、クエリは作成されません)。

このクエリを注文する場合、たとえばプロパティで、SDKで実行するか、手動で記述できる場合にdateインデックス定義を作成します。index.yaml

ドキュメントから:

アプリケーションによって行われるすべてのデータストアクエリには、対応するインデックスが必要です。単一のプロパティに対するクエリなど、単純なクエリのインデックスは自動的に作成されます。複雑なクエリのインデックスは、index.yamlという名前の構成ファイルで定義する必要があります。このファイルは、データストアにインデックスを作成するためにアプリケーションとともにアップロードされます。

于 2012-12-11T17:55:22.853 に答える