跳到主要内容

模型修改

模型修改就是把数据写回本地数据库。业务代码真正常用的入口不多,先记住下面几种:

  • 单条实体:save()remove()reset()
  • 批量实体:rxdb.entityManager.saveMany()rxdb.entityManager.removeMany()
  • 更底层写入:rxdb.entityManager.create()update()remove()

推荐入口

场景推荐 API说明
新建一条数据new Entity() + entity.save()默认主路径
更新一条数据改属性后 entity.save()根据 status.local 自动走 create / update
删除一条数据entity.remove()已有实体实例时最直接
批量创建或更新rxdb.entityManager.saveMany()统一合成 mutation
批量删除rxdb.entityManager.removeMany()避免逐条删除

写入关系图

单条写入流程

状态判断

import { getEntityStatus } from '@aiao/rxdb';

const status = getEntityStatus(todo);

console.log(status.local);
console.log(status.modified);
  • local === false:实体还没写入本地库
  • local === true:实体已经存在于本地库
  • modified === true:当前有未保存改动

关于事务

当前业务文档不把某个公开 rxdb.transaction(...) 当成主入口,因为稳定公开的业务写法仍然还是:

  • save()
  • remove()
  • saveMany()
  • removeMany()

如果你真的要控制更底层的事务边界,那已经进入 adapter 层,见 事务机制

继续阅读