5

Windowsストアのjavascriptアプリケーションで作業しています。アプリケーションは、紺色のモバイルサービスからのデータを使用します。紺碧のデータベースから行数を取得するには?

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

コードテーブル全体itemをフェッチし、可変itemTableにそれを保存します 以下のコードを検討してください。

itemTableに存在する行数を返すコードは何ですか?

答えて

5

テーブル/クエリオブジェクトのincludeTotalCount方法は(残念ながら、それは文書から欠落しています、私はそれを固定持っている製品チームにバグを報告します)です。

クエリオブジェクトでreadを呼び出すと、非常に大きなテーブルのすべての要素が返されるのを防ぐために、デフォルトで50(IIRC、数は異なる場合があります)の要素が返されます(したがって、予約されたサービスのアウトバウンド帯域幅コスト、または無料サービスのクォータに達する)。だからテーブルのすべての要素を取得し、結果の長さを得ることは正確ではないかもしれません。

テーブル内の要素の数が必要な場合は、の要素を0からの要素に戻し、合計の数を返します。

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

+1

carlosfigueiraありがとうございました!このプロセスを紺側で行い、行カウントの結果だけをクライアントアプリケーションに返しますか? –

+0

ちょうどこれを行った簡単な 'Query'メソッド' .count() 'を提供することは素晴らしいことです。 .getTable( 'tableName').count() 'read()'の代わりに。スカラー結果を得る。 – SliverNinja

+1

良いアイデアは、製品チームに提案を提出します。 – carlosfigueira

2

table queryread()を実行し、結果のlengthを取得する必要があります。

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

結果の全部ではなくレコードの数だけを表示している場合は、送信するデータの量を減らすためにID列を選択してください。このニーズを満たすには、JS Query APIにはまだcount()メソッドがありません。あなたが探しているもの

var itemTable = mobileService.getTable('item').select('itemID'); 
+0

このこのブログ記事に行きますコードは実際には動作しません。ネットワーク要求が完了すると、 'then'関数に渡された関数パラメータは非同期に実行されます。つまり、 'var numItems = items.length'行はそれより前に実行され、' items'はその時点では未定義になります。 – carlosfigueira

+0

返信いただきありがとうございますSilverNinja!しかし、上記のコードでは、 "items"は "results"を割り当てた後でも未定義です。 が未定義またはnull参照のプロパティ「長さ」を取得できません: –

+0

あなたがいるかどうかをチェックしてみ(注:私AzureのDBが空でない)、したがって、「長さ」を付加する「の項目が」 JavaScriptのランタイムエラー次のエラーがポップ'read()'操作中にエラーを戻します。 'failFilter' ...' .then(function(results){...})関数の別のパラメータを['then()'](http://api.jquery.com/deferred.then/)に追加してください(){alert( "$。読み込みに失敗しました!'';);) ' – SliverNinja

4

誰もが唯一の(私のような)は、C#でtotalCountプロパティを取得する方法で、ここと興味を持って来れば、これはあなたがそれを行う方法です。

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

クレジットはhere

関連する問題