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

如果有人来到这里并对如何仅在 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 回答
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 回答
2

您需要对表查询执行read()然后获取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');
于 2013-03-25T14:20:32.127 回答