跳到主要内容

删除数据

RxDB 支持单条删除和批量删除,均通过 Repository 层与适配器交互。

实体方法删除

最简单的方式是直接调用实体上的 remove() 方法:

const todo = await firstValueFrom(Todo.findOne({ where: { id: 1 } }));

await todo.remove();

remove()EntityManager 在初始化实体时注入到原型上的便捷方法。

使用 Repository 删除

通过 Repository 的 remove() 方法删除:

const todo = await firstValueFrom(Todo.findOne({ where: { id: 1 } }));

await Todo.remove(todo);

Repository.remove() 内部会调用适配器的删除接口,将数据从本地数据库中移除。

批量删除

使用 entityManager.removeMany() 批量删除多个实体:

import { inject } from '@angular/core';
import { RxDB } from '@aiao/rxdb';

const rxdb = inject(RxDB);

const completedTodos = await firstValueFrom(Todo.findMany({ where: { completed: true } }));

// 批量删除所有已完成的 todo
await rxdb.entityManager.removeMany(completedTodos);

removeMany() 将多个删除操作合并到一个 mutations 调用中,比逐条删除更高效。

删除流程

entity.remove()


EntityManager.remove(entity)


Repository.remove(entity)


adapter.remove(entity) → 本地数据库


同步层 → 远程数据库(如配置了同步)
注意事项
  • 删除操作会立即从本地数据库中移除数据
  • 如果配置了远程同步(如 Supabase 适配器),删除操作也会同步到远程
  • 删除后,相关的查询订阅(如 findMany 的 Observable)会自动更新结果