根据条件获取列表页面记录数的技巧

cybozu发表于:2017年03月30日 15:06:38更新于:2019年09月24日 13:51:48

概要

大家好。

有时候会有获取列表页面的当前记录数的情况。例如:像下面这样显示状态为“处理中”的记录件数的时候是非常方便的。

但是,kintone里并没有获取记录件数的API。获取记录件数的话通常有2种方法:一种为使用records.json每次获取100件来计算,另一种为DOM的字符串操作。这次将为大家介绍使用records.json每次获取100件来计算的方法。

代码

 (function() {
    "use strict";
    // 列表页面
    kintone.events.on('app.record.index.show', function(event) {
        // 现在的搜索条件&获取处理中的记录
        (new KintoneRecordManager).getProcessingRecords(function(records) {
            kintone.app.getHeaderMenuSpaceElement().innerHTML = '处理中的记录件数:' + records.length;
        });
    });
})();
/**
 * kintone record manager
 */
KintoneRecordManager = (function() {
    KintoneRecordManager.prototype.records = [];
    KintoneRecordManager.prototype.appId = null;
    KintoneRecordManager.prototype.query = '';
    KintoneRecordManager.prototype.limit = 100;
    KintoneRecordManager.prototype.offset = 0;
    function KintoneRecordManager() {
        this.appId = kintone.app.getId();
    }
    // 现在的搜索条件&获取处理中的记录
    KintoneRecordManager.prototype.getProcessingRecords = function(callback) {
        this.appId = kintone.app.getId();
        this.query = kintone.app.getQueryCondition() + ' status = "处理中"';
        this.getRecords(callback);
    };
    // 获取记录
    KintoneRecordManager.prototype.getRecords = function(callback) {
        kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
            app: this.appId,
            query: this.query + (' limit ' + this.limit + ' offset ' + this.offset)
        }, (function(_this) {
            return function(res) {
                var len;
                Array.prototype.push.apply(_this.records, res.records);
                len = res.records.length;
                _this.offset += len;
                if (len < _this.limit) {
                    _this.ready = true;
                    if (callback !== null) {
                        callback(_this.records);
                    }
                } else {
                    _this.getRecords(callback);
                }
            };
        })(this));
    };
    return KintoneRecordManager;
})();

调用KintoneRecordManager的getRecords知道获取的记录件数不到100件。

最后

这次,给大家讲解了记录件数的获取方法。但是这个方法,假如记录件数多的话,获取记录的时间也会增加。在这种情形下,虽然可以使用DOM的字符串操作来获取下面截图的记录件数,但是版本更新的时候就会无法运行所以并不推荐。

要是kintone可以早点推出可以获取记录件数的API就好了呢(^^♪

 

该Tips在2014年6月版中进行过确认。


回复(2)

  • betsy_yan

    coca 你好!

    可以使用批量获取记录api的totalCount参数获取记录总数量。

    详情请参见:

    https://cybozudev.kf5.com/hc/kb/article/201594#step2

    注:

    totalCount布尔值或字符串可省略

    要获取满足【query】参数中指定的条件的记录条数时,指定【true】。


  • coca

    能否用批量获取记录api的totalCount参数获取记录总数量?