Skip to content

Base 对象

Base 对象提供了一些操作数据的方法

子表

getActiveTable

获取当前选中的表格, 返回一个 table 对象

例子
 const table = base.getActiveTable();
 output.markdown(`#### ${table.name}`);

getTables

获取所有的子表

例子
const tables = base.getTables();
output.text(tables.length);

getTableByName

通过一个表格的名称获取一个 table 对象

const table = base.getTableByName(tableName: String);
例子
const table = base.getTableByName('Table1');
output.text(table._id);

addTable

添加一个子表

base.addTable(tableName: String);
例子
base.addTable('New table');

renameTable

重命名一个子表

base.renameTable(oldName: String, newName: String);
例子
base.renameTable('Old name', 'New name');

deleteTable

删除一个子表

base.deleteTable(tableName: String);
例子
base.deleteTable('Old table');

视图

getActiveView

获取当前的视图,该方法返回一个 view 对象

例子
const view  = base.getActiveView();
output.text(view._id);

getViews

获取当前表格的所有视图,并以一个数组的形式返回所有的视图

const views = base.getViews(table: Object/String);
例子
const table  = base.getTableByName('Table1');
const views = base.getViews(table);
output.text(views.length);
const views = base.getViews('Table1');
output.text(views.length);

getViewByName

通过视图的名称获取表格中的一个视图对象,并返回一个视图对象

const view = base.getViewByName(table: Object/String, viewName: String);
例子
const table  = base.getTableByName('Table1'); 
const view = base.getViewByName(table, 'view 1');
output.text(view.name);
const view = base.getViewByName('Table1', 'view 1');
output.text(view.name);

addView

一个子表中添加一个视图

base.addView(table: Object/String, viewName: String);
例子
const table  = base.getTableByName('Table1');
base.addView(table, 'view 2');
base.addView('Table1', 'view 2');

renameView

重命名一个子表中的一个视图

base.renameView(table: Object/String, currentViewName: String, nextViewName: String);
例子
const table  = base.getTableByName('Table1');
base.renameView(table, 'view1', 'view2');
base.renameView('Table1', 'view1', 'view2');

deleteView

删除一个视图

base.deleteView(table: Object/String, viewName: String);
例子
const table  = base.getTableByName('Table1');
base.deleteView(table, 'view2');
base.deleteView('Table1', 'view2');

getColumns

获取一个表格中的所有列,并以一个数组的形式返回所有的列对象

const columns = base.getColumns(table: Object/String);
例子
const table  = base.getTableByName('Table1');
const columns = base.getColumns(table);

column.forEach((column) => {
    output.text(column.name);
})
const columns = base.getColumns('Table1');

getShownColumns

获取一个视图中所有显示的列,不包含该视图中已经被隐藏的列, 返回一个数组

const columns = base.getShownColumns(table: Object/String, view: Object/String);
例子
const table  = base.getTableByName('Table1');
const view = base.getViewByName(table, 'view 1');
const columns = base.getShownColumns(table, view);
column.forEach((column) => {
    output.text(column.name);
})
const columns = base.getShownColumns('Table1', 'view 1');

getColumnByName

通过列的名称获取该列对象

const column = base.getColumnByName(table: Object/String, name: String);
例子
const column = base.getColumnByName(table, 'Column name');
output.text(column.name);
const column = base.getColumnByName('Table1', 'Column name');

getColumnsByType

获取该表格中所有特定种类的列

const columns = base.getColumnsByType(table: Object/String, type: String);
例子
const table  = base.getTableByName('Table1');
const columns = base.getColumnsByType(table, 'text');
output.text(column.length);
const columns = base.getColumnsByType('Table1', 'text');
output.text(column.length);

getRows

获取一个视图所有的行,返回一个数组

const rows = base.getRows(table: Object/String, view: Object/String);
例子
const table = base.getTableByName('Table1');
const view = base.getViewByName(table, 'view1');
const rows = base.getRows(table, view);
const rows = base.getRows('Table1', 'view1');

getGroupedRows

获取分组视图中的行分组数据

base.getGroupedRows(table: Object/String, view: Object/String);
例子
const table = base.getTableByName('Table1');
const view = base.getViewByName(table, '分组视图');
const groupViewRows = base.getGroupedRows(table, view);
const groupViewRows = base.getGroupedRows('Table1', '分组视图');

getRowById

通过一个行的 id 获取行,返回一个行对象

const row = base.getRowById(table: Object/String, rowId: String);
例子
const table = base.getTableByName('Table1');
const row = base.getRowById(table, "M_lSEOYYTeuKTaHCEOL7nw");
const row = base.getRowById('Table1', "M_lSEOYYTeuKTaHCEOL7nw");

deleteRowById

通过一个行的 id 删除当前表格中的该行

base.deleteRowById(table: Object/String, rowId: String);
例子
const table = base.getTableByName('Table1');
base.deleteRowById(table, 'M_lSEOYYTeuKTaHCEOL7nw');
base.deleteRowById('Table1', 'M_lSEOYYTeuKTaHCEOL7nw');

addRow

在一个子表中添加一行

base.addRow(table: Object/String, rowData: Object, viewName?: String)
例子
const table = base.getTableByName('Table1');
base.addRow(table, {'名称': '小强', '年龄': '18'});
base.addRow(table, {'名称': '小强', '年龄': '18'}, 'Default View');
base.addRow('Table1', {'名称': '小强', '年龄': '18'});
base.addRow('Table1', {'名称': '小强', '年龄': '18'}, 'Default View');

modifyRow

修改表格中的某一行

base.modifyRow(table: Object/String, row: Object, updateRowData: Object);
例子
const table = base.getTableByName('Table1');
const row = base.getRowById(table, "M_lSEOYYTeuKTaHCEOL7nw");
base.modifyRow(table, row, {'Name': 'new name', 'number': 100});
const row = base.getRowById('Table1', "M_lSEOYYTeuKTaHCEOL7nw");
base.modifyRow('Table1', row, {'Name': 'new name', 'number': 100});

modifyRows

一次性修改表格中的多行

base.modifyRows(table: Object/String, rows: Array, updatedRows: Array);
例子
const table = base.getTableByName('Table1');
const rows = base.getRows('Table1', '默认视图');
const selectedColumnName = '名称';
const selectedRows = [], updatedRows = [];

rows.forEach((row) => {
  if (row[selectedColumnName] === 'name') {
    selectedRows.push(row);
    updatedRows.push({[selectedColumnName]: 'name1'});
  }
});
base.modifyRows(table, selectedRows, updatedRows);

filter

通过一个查询语句, 筛选出表格中符合条件的行, 返回一个 querySet 对象

例子

// 过滤出 number列 等于 5 的行, 返回一个 querySet 对象
const querySet = base.filter('Table1', '默认视图', 'number = 5');

添加链接,链接其他表记录

base.addLink(linkId, tableName, linkedTableName, rowId, linkedRowId)

其中

  • linkId: 链接列data属性下的 link_id
  • tableName: 链接表的名字
  • linkedTableName: 被链接表的名字
  • rowId: 链接行 id
  • linkedRowId: 被链接行的 id
例子
base.addLink('5WeC', 'real-img-files', 'contact', 'CGtoJB1oQM60RiKT-c5J-g', 'PALm2wPKTCy-jdJNv_UWaQ')

移除某个链接

base.removeLink(linkId, tableName, linkedTableName, rowId, linkedRowId)
例子
base.removeLink('5WeC', 'real-img-files', 'contact', 'CGtoJB1oQM60RiKT-c5J-g', 'PALm2wPKTCy-jdJNv_UWaQ')

getColumnLinkId

通过列名来获取链接的id

base.getColumnLinkId(table_name, column_name)
例子
base.getColumnLinkId('Table1', '记录')

移除现有的所有的行的链接, 并添加新链接

base.updateLinks(linkId, tableName, linkedTableName, rowId, updatedlinkedRowIds)
例子
const rows = base.getRows('contact', '默认视图');

// 更新行的链接为 [rows[0]._id, rows[1]._id, rows[2]._id, rows[3]._id]
base.updateLinks('5WeC', 'real-img-files', 'contact', 'CGtoJB1oQM60RiKT-c5J-g', [rows[0]._id, rows[1]._id, rows[2]._id, rows[3]._id])

query

使用 sql 语句查询一个 base

await base.query(sql)

例子

基础查询
const data = await base.query('select name, price, year from Bill')
output.text(data)

结果

[
    {"name":"Bob","price":"300","year":"2021"},
    {"name":"Bob","price":"300","year":"2019"},
    {"price":"100","year":"2019","name":"Tom"},
    {"name":"Tom","price":"100","year":"2020"},
    {"name":"Tom","price":"200","year":"2021"},
    {"name":"Jane","price":"200","year":"2020"},
    {"name":"Jane","price":"200","year":"2021"}
]
WHERE
const data = await base.query('select name, price from Bill where year = 2021')
output.text(data)

结果

[
    {"name":"Bob","price":"300"},
    {"name":"Tom","price":"200"},
    {"name":"Jane","price":"200"}
]
ORDER BY
const data = await base.query('select name, price from Bill where year = 2021')
output.text(data)

结果

[
    {"price":"300","year":2019,"name":"Bob"},
    {"price":"100","year":2019,"name":"Tom"},
    {"name":"Tom","price":"100","year":2020},
    {"price":"200","year":2020,"name":"Jane"},
    {"name":"Bob","price":"300","year":2021},
    {"name":"Tom","price":"200","year":2021},
    {"name":"Jane","price":"200","year":2021}
]
GROUP BY
const data = await base.query('select name, sum(price) from Bill group by name')
output.text(data)

结果

[
    {"name":"Bob","SUM(price)":600},
    {"SUM(price)":400,"name":"Jane"},
    {"name":"Tom","SUM(price)":400}
]
DISTINCT
const data = await base.query('select distinct name from Bill')
output.text(data)

结果

[
    {"name":"Bob"},
    {"name":"Jane"},
    {"name":"Tom"}
]