2017-05-03 23 views
0

在後端使用Azure移動服務和Azure簡易表我希望在客戶端上獲得過濾的數據,因爲表可能相當大,但有用的行對具有自己的ID的特定用戶不會。我試圖使用Azure移動服務PullAsync並非所有數據

IMobileServiceTableQuery<Messages> query = 
    msgTable.Where(c => c.UserId==_myId); 

await msgTable.PullAsync("syncmsg"+_myid, query); 

但事實證明,PullAsync應用查詢只在下次,但第一次它拉取所有數據。有沒有辦法使用Azure移動服務在本地存儲上拉取和存儲,只在查詢數據上過濾?

回答

2

因此,首先要做的是 - 您應該在服務器上進行安全過濾,而不是客戶端。根據您的規格,可以通過簡單的方法來調整服務器上的過濾器。請參閱https://github.com/Azure/azure-mobile-apps-node/tree/master/samples瞭解大量樣本。

至於這個問題,你正在構建錯誤的查詢。你想要的東西是:

var query = msgTable.CreateQuery().Where(c => c.UserId == myId); 
await msgTable.PullAsync('mysyncquery', query); 

請注意中間的CreateQuery()。沒有這個,你不會設置基本查詢。

+0

感謝您的糾正。但它仍然返回所有行。所以唯一的辦法是在服務器端編寫過濾器,我無法通過所有過濾器從客戶端傳遞查詢? –

+0

查看正在傳遞給後端的查詢。它應該包括$ filter =(userId eq'something') - 這應該起作用,我的測試表明正確的事情發生。 –

+0

非常感謝,它的工作原理!不幸的是,我不能說其他人可能會遇到什麼問題,但現在開始工作了! –