5

WindowsストアのJavaScriptアプリケーションに取り組んでいます。このアプリケーションは、Azureモバイルサービスからのデータを使用します。以下のコードを検討してください。

var itemTable = mobileService.getTable('item');
//item is the table name stored in the azure database

コードはテーブル全体をフェッチし、itemそれを変数に保存しますitemTable

どのコードがに存在する行数を返しますitemTableか?

4

3 に答える 3

5

探しているのはincludeTotalCount、テーブル/クエリオブジェクトのメソッドです(残念ながら、ドキュメントにはありません。製品チームにバグを報告して修正してもらいます)。

クエリオブジェクトを呼び出すreadと、デフォルトで50(IIRC、数は異なる場合があります)の要素が返され、ナイーブな呼び出しが非常に大きなテーブル内のすべての要素を返すのを防ぎます(したがって、予約済みのサービス、または無料のサービスの割り当てに達している)。したがって、テーブル内のすべての要素を取得し、結果の長さを取得することは正確ではない可能性があります。

テーブル内の要素の数だけが必要な場合は、次のコードを使用できます。ゼロ要素を返し、合計数を返します。

    var table = client.getTable('tableName');
    table.take(0).includeTotalCount().read().then(function (results) {
        var count = results.totalCount;
        new Windows.UI.Popups.MessageDialog('Total count: ' + count).showAsync();
    });

一部の要素をクエリし、合計数(つまり、ページング用)も含める場合は、適切な呼び出しtake()skip()呼び出しを追加するincludeTotalCountだけです。

于 2013-03-25T15:05:28.630 に答える
5

誰かがここに来て、C#でのみtotalCountを取得する方法に興味がある場合(私のように)、これはあなたがそれを行う方法です:

var table =  MobileService.GetTable<T> ();
var query = table.Take(0).IncludeTotalCount();
IList<T> results = await query.ToListAsync ();
long count = ((ITotalCountProvider)results).TotalCount;

クレジットはここのこのブログ投稿に行きます

于 2014-07-02T00:47:37.710 に答える
2

テーブルクエリread()を実行してから、結果を取得する必要があります。length

var items, numItems;
itemTable.read().then(function(results) { items = results; numItems = items.length; });

結果全体ではなくレコード数のみを表示している場合は、ID列を選択するだけで、送信されるデータの量を減らすことができます。このニーズを満たすためにJSQueryAPIcount()で利用できるメソッドがまだありません。

var itemTable = mobileService.getTable('item').select('itemID');
于 2013-03-25T14:20:32.127 に答える