Javascript 如何从azure数据库获取行数?

Javascript 如何从azure数据库获取行数?,javascript,azure,windows-8,windows-store-apps,azure-mobile-services,Javascript,Azure,Windows 8,Windows Store Apps,Azure Mobile Services,我正在开发一个windows应用商店javascript应用程序。该应用程序使用来自azure移动服务的数据。 考虑下面的代码: var itemTable=mobileService.getTable'item'; //item是存储在azure数据库中的表名 代码获取整个表项并将其保存到变量itemTable中 什么代码将返回itemTable中的行数???您需要在上执行,然后获取结果的长度 变量项,单位; itemTable.read.thenfunctionresults{items=r

我正在开发一个windows应用商店javascript应用程序。该应用程序使用来自azure移动服务的数据。 考虑下面的代码:

var itemTable=mobileService.getTable'item'; //item是存储在azure数据库中的表名 代码获取整个表项并将其保存到变量itemTable中

什么代码将返回itemTable中的行数???

您需要在上执行,然后获取结果的长度

变量项,单位; itemTable.read.thenfunctionresults{items=results;numItems=items.length;}; 如果只显示记录计数,而不是整个结果,则只需选择ID列以减少传输的数据量。我还没有看到一个可用的计数方法来满足这一需求

var itemTable=mobileService.getTable'item'。选择'itemID';
您要查找的是表/查询对象上的includeTotalCount方法。不幸的是,文档中缺少该方法,我将向产品团队提交一个bug,以进行修复

在查询对象上调用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。

如果有人来这里,对如何仅在C上获得总计数感兴趣,那么您可以这样做:

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

这篇博文的功劳在于

这段代码实际上不起作用。一旦网络请求完成,传递给then函数的函数参数将异步执行。这意味着在此之前将执行var numItems=items.length行,此时将不定义项。感谢您的回复SilverNinja!但是在给定的代码中,在将结果分配给它之后,上面的项仍然是未定义的。因此,将长度附加到项会弹出以下错误JavaScript运行时错误:无法获取未定义或空引用的属性“length”注意:My Azure DB未清空检查您是否在读取操作期间返回错误。将另一个参数添加到failFilter…,然后将函数结果{…},函数{alert$.read失败!;这不是一个错误问题-即使调用成功,您仍将无法获取未定义或空引用错误的属性'length'。如果您将该行移到函数,它将停止给出此错误,但是,如我的另一个回答所示,在一般情况下它仍然不起作用。@Carlosfiguera谢谢对于指针-我已将其添加到函数中,但您的内部功能包括TotalCount正是Amar Zeno所寻求的功能。-谢谢carlosfigueira!它起了作用:。有没有办法在azure端执行此过程并将行计数结果单独返回到客户端应用程序?提供一个简单的查询方法会很好。count which就是这样做的。类似于…client.getTable'tableName'。计数而不是读取以获得标量结果;好主意,将向产品团队提交建议。在当前版本中如何执行此操作的任何更新?我收到一条不存在的错误消息。我还尝试了将函数作为读取的第一个参数传递,仍然是没有乐趣。ITotalCountProvider被标记为过时,我使用了IQueryResultEnumerable。