概要
大家好。
这次将为大家介绍获取全部记录的方法 (^^)
代码
/** * 全部记录的获取 * * @author Yuichi Ochiai <ochiai@cstap.com> */ (function() { "use strict"; // 记录列表页面 kintone.events.on('app.record.index.show', function(event) { var manager = new KintoneRecordManager; manager.getRecords(function(records) { // 记录获取后的处理 console.log(records); }); return event; }); /** * 和kintone通信的类 */ var KintoneRecordManager = (function() { KintoneRecordManager.prototype.records = []; // 获取的记录 KintoneRecordManager.prototype.appId = null; // 应用ID KintoneRecordManager.prototype.query = ''; // 检索query KintoneRecordManager.prototype.limit = 100; // 每次获取的最大件数 KintoneRecordManager.prototype.offset = 0; // offset function KintoneRecordManager() { this.appId = kintone.app.getId(); this.records = []; } // 获取所有记录 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); // 记录获取后的callback } } else { _this.getRecords(callback); // 调用自身函数 } }; })(this) ); }; return KintoneRecordManager; })(); })();
KintoneRecordManager
KintoneRecordManager是一个关于记录处理的类。使用递归调用getRecords方法,可以实现全部记录的获取。因为要多次调用REST API的记录的批量获取,记录数多的情形下比较花时间。
利用方法
在KintoneRecordManager这个类里可以设定一些属性。
应用ID的指定
默认使用kintone.app.getId()。需要指定的时候可以采用以下的代码。
// 记录列表页面 kintone.events.on('app.record.index.show', function(event) { var manager = new KintoneRecordManager; manager.appId = 100; // 其他的应用ID manager.getRecords(function(records) { // 获取记录后的处理 console.log(records); }); return event; });
使用query指定检索条件
默认没有检索条件。想要的指定的时候可以像下面这样写。
// 记录列表页面 kintone.events.on('app.record.index.show', function(event) { var manager = new KintoneRecordManager; manager.query = "数值_0 > 100"; // 检索条件的指定 manager.getRecords(function(records) { // 记录获取后的处理 console.log(records); }); return event; });
获取全部记录后的callback
调用getRecords方法时,可以指定callback。对于获取到全部记录后的处理可以使用callback来指定。
最后
全部记录的获取,往往记录数的多少决定着所花费时间的多少。大家在使用的时候,请注意这点。另外,本Tips虽然只是以记录列表页面的显示事件作为范例,其实使用其他的事件也是可以的,大家可以试试看。