2013-06-23 48 views
0

我已經開始使用移動後端入門實現我自己的示例,並且無法解決查詢的一個問題。 根據規範https://developers.google.com/appengine/docs/java/datastore/queries,對於單值或多值屬性,使用過濾器進行查詢應該沒有區別。針對多值屬性的移動後端初學者數據存儲查詢

不幸的是,我無法使它與移動後端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); 

結果一個空列表總是被返回。如果未指定過濾器,則按預期方式從後端返回所有屬性。

是否有可能使用當前實現查詢多值屬性?

+0

此答案可能對您有所幫助http://stackoverflow.com/a/20452334/2147383 – Juniper

回答

0

可以查詢多值屬性。你可以利用一個謂詞過濾器

Filter tagfilter = new FilterPredicate("tags", 
         FilterOperator.EQUAL, 
         "two"); 
query.setFilter(tagfilter); 
0

答案據我所知有關移動後端起動器是沒有。雖然我不知道谷歌雲端點。

如果我理解正確,請發送CloudEntitynewPost),並注意屬性爲List。在"documentation" of mobile backend starter他們說,所支持的類型CloudEntity之一是:

列表/地圖:

的java.util.List或java.util.Map對象可以包含長字符串 (長於500個字符)和子列表/地圖。這些元素是 未在數據存儲器上編入索引並且不能用作查詢 過濾/排序條件。空列表/地圖不存儲在數據存儲

所以你不能使用列表/地圖作爲過濾器