Idea 描述


这个轮子是为 Phos-Player 而实现的,追求通用化操作,为以后基于 notion 造轮子打下基础。

此轮子封装 Notion 中对表格操作的请求,力求把 Notion 变成一个通用的 CMS ,成为个人数据中心。对外提供 API,方便造轮子,实现各个领域的个人数据解决方案。

基于这个轮子将创造

特性


实现下列接口定义

let nb = Natabase({
		token_v2,
		isAutoFetchRelationData:false // 是否开启自动加载,获取关联表格的所有数据。
})

// 预先获取自定义多个表格的数据,缓存下来。
nb.prefetch([
	{
		url: "<https://www.notion.so/gine/3a05e0cbd7cb4340b9c7eb2330ee6bff?v=a71c2c71987746ebb5b33fb7beabd1b6>",
		limit: 500
	},
	{
		url: "<https://www.notion.so/gine/3a05e0cbd7cb4340b9c7eb2330ee6bff?v=a71c2c71987746ebb5b33fb7beabd1b6>",
		limit: 500
	},
])

// 考虑到 notion 的limit 实现,以及数据量的问题。所以每次请求数据都是尽可能拉去最大量的数据。不再提供搜索接口。
let collection = nb.get({
	url: "<https://www.notion.so/gine/3a05e0cbd7cb4340b9c7eb2330ee6bff?v=a71c2c71987746ebb5b33fb7beabd1b6>",
	limit: 500
})

row = {
	...baseProps
}
// 当访问 relation 和 rollup 字段时(重新定义 getProps 方法),getRecordValues 获取单个记录的数据。
// 如果要通过  relation 里的记录访问其 collection,则再次请求获取完整的 collection 数据。 lazydata

// fp

collection.rows.filter(obj=> obj.name= "test")

// 添加列
collection.addCol("name","checkbox")

// 删除列
collection.rmCol("name")

// 添加行
let row = collection.add_row({age:1})
row.name = "tom"
row.xxx = 2
row.save()

// 删除行
row.delete()

// 搜索行
collection.rows.find(obj=>obj.name="qs")

// 模糊搜索
// pass

collection.rows.sortBy("column","AST")

前置任务