正在开发一个Windows商店的javascript应用程序。该应用程序使用来自azure移动服务的数据。 请考虑以下代码:
var itemTable = mobileService.getTable('item');
//item is the table name stored in the azure database
代码获取整个表item
并将其保存到变量itemTable
。
什么代码将返回itemTable
??
答案 0 :(得分: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
as好。
答案 1 :(得分: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;
来自此博文here
答案 2 :(得分:2)
您需要在read()
上执行table query,然后获取结果的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');