0

Mobile Backend Starter を使用して独自の例を実装し始めましたが、クエリに関する 1 つの問題を解決できません。仕様https://developers.google.com/appengine/docs/java/datastore/queriesによると、単一または複数値のプロパティのフィルターを使用してクエリを作成することに違いはありません。

残念ながら、Mobile Backend Starte ページで提供されている Android アプリの例では動作しません。

多値プロパティを追加するために使用するコードは次のとおりです。

newPost.put("tags", Arrays.asList("one","two","three"));

指定したプロパティのいずれかを含む各レコードを取得するために使用するフィルター:

CloudQuery query = new CloudQuery("Guestbook");

query.setFilter(F.eq("tags","two"));

getCloudBackend().list(query, handler);

その結果、常に空のリストが返されます。フィルタが指定されていない場合、すべてのプロパティが期待どおりにバックエンドから返されます。

現在の実装で多値プロパティのクエリを作成することは可能ですか?

4

2 に答える 2

0

Mobile Backend Starter について私が知る限り、答えはノーです。google-cloud-endpoints については知りませんが。

私の理解が正しければ、プロパティが であるCloudEntity( ) を送信します。モバイル バックエンド スターターの「ドキュメント」では、サポートされているタイプの 1 つを次のように述べています。newPostListCloudEntity

リスト/マップ:

長い文字列 (500 文字を超える) および子リスト/マップを含めることができる java.util.List または java.util.Map オブジェクト。これらの要素はデータストアでインデックス化されていないため、クエリのフィルタリング/並べ替え条件として使用できません。空のリスト/マップはデータストアに保存されません

したがって、そのリスト/マップをフィルターとして使用することはできません

于 2013-08-18T15:28:06.463 に答える
0

多値プロパティを照会できます。フィルター述語を利用できます

Filter tagfilter = new FilterPredicate("tags",
                      FilterOperator.EQUAL,
                      "two");
query.setFilter(tagfilter);
于 2013-07-02T19:29:36.950 に答える