2017-05-03 4 views
0

バックエンドでAzure Mobile ServicesとAzure Easy Tablesを使用しています。テーブルがかなり大きくなる可能性があるため、クライアントでフィルタリングされたデータを取得したいと思います。 。私はAzure Mobile Services PullAsyncはすべてのデータではありません

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

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

を使用しようとしましたが、それはそれは、すべてのデータを引き出しPullAsyncのみ次の回にクエリを適用することが判明したが、初めて。 Azure Mobile Servicesを使用して、クエリデータでのみフィルタリングされたローカルストレージにプルアンドストアする方法はありますか?

答えて

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

ありがとう、それは動作します!残念ながら、私は同じものにこだわるかもしれない他の人たちのために何が問題だったと言うことはできませんが、今ではそれが働き始めました! –

関連する問題