TinyBase 查询功能入门指南

TinyBase 查询功能入门指南

tinybase The reactive data store for local‑first apps. tinybase 项目地址: https://gitcode.com/gh_mirrors/ti/tinybase

什么是 TinyBase 查询

TinyBase 是一个轻量级的状态管理库,其查询模块提供了强大的数据查询能力。通过查询功能,开发者可以针对 Store 中的 Tables 执行复杂的数据操作,包括:

  • 筛选特定的行(Row)和单元格(Cell)
  • 执行数据分组(grouping)
  • 进行聚合计算(aggregation)
  • 创建数据视图

核心概念解析

1. 创建查询对象

查询功能的核心入口是 createQueries 函数,它会返回一个 Queries 对象。这个对象提供了以下能力:

  • 定义新的查询
  • 直接访问查询结果
  • 注册结果变更监听器
import {createQueries, createStore} from 'tinybase';

const store = createStore().setTable('pets', {
  fido: {species: 'dog', color: 'brown'},
  felix: {species: 'cat', color: 'black'},
  cujo: {species: 'dog', color: 'black'},
});

const queries = createQueries(store);

2. 定义查询

查询定义使用 setQueryDefinition 方法,它接收三个参数:

  1. 查询名称
  2. 要查询的表名
  3. 定义查询逻辑的函数
queries.setQueryDefinition('dogColors', 'pets', ({select, where}) => {
  select('color');
  where('species', 'dog');
});

在这个例子中,我们:

  • 使用 select 指定要返回的列
  • 使用 where 添加筛选条件

3. 获取查询结果

查询结果可以通过多种方法获取,这些方法与 Store 的获取方法对应,但前缀为"Result":

console.log(queries.getResultTable('dogColors'));
// 输出: {fido: {color: 'brown'}, cujo: {color: 'black'}}

常用结果获取方法包括:

  • getResultTable - 获取整个结果表
  • getResultRowIds - 获取结果行ID
  • getResultRow - 获取单行数据
  • getResultCell - 获取单个单元格值

响应式特性

TinyBase 查询具有响应式特性,当底层数据变化时,查询结果会自动更新。我们可以添加监听器来响应这些变化:

const listenerId = queries.addResultTableListener('dogColors', () => {
  console.log(queries.getResultTable('dogColors'));
});

store.setCell('pets', 'cujo', 'species', 'wolf');
// 监听器会输出: {fido: {color: 'brown'}}

监听器方法与 Store 的监听方法类似,前缀为"Result":

  • addResultTableListener
  • addResultRowListener
  • addResultCellListener

查询与其他模块的关系

TinyBase 还提供了其他专门的数据处理模块:

  • Metrics - 用于计算和跟踪指标
  • Indexes - 用于创建索引
  • Relationships - 用于建立行间关系

相比这些专用模块,Queries 提供了更通用但更强大的查询能力,适合需要复杂数据操作的场景。

实际应用场景

  1. 数据筛选:从大量数据中提取符合条件的子集
  2. 数据转换:创建特定格式的数据视图
  3. 实时仪表盘:结合监听器实现数据变化时的自动更新
  4. 数据预处理:为UI组件准备所需格式的数据

最佳实践

  1. 合理命名查询:使用有意义的查询名称便于维护
  2. 复用查询对象:一个Store对应一个Queries对象
  3. 及时清理监听器:避免内存泄漏
  4. 组合简单查询:复杂查询可以拆分为多个简单查询

通过掌握 TinyBase 的查询功能,开发者可以高效地处理应用状态数据,构建响应式且高性能的应用程序。

tinybase The reactive data store for local‑first apps. tinybase 项目地址: https://gitcode.com/gh_mirrors/ti/tinybase

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

章迅筝Diane

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值