跳到主要内容

createSearchState()

function createSearchState(): object;

Defined in: packages/rxdb-plugin-search/src/core/search-state.ts:59

创建一个全新的搜索状态机。

实现说明:基于 BehaviorSubject<SearchStateSnapshot> 的纯函数转移。所有公开转移 方法都会通过 reduce 计算下一帧并 push 给订阅者;state$ / error$ / hasMore$ 通过 map + distinctUntilChanged 派生,避免重复 emit。

状态机规则(与 data-model.md §6 完全一致):

  • 初始 idle
  • idle → loading:beginQuery(non-empty)
  • loading → success:resolveResults(non-empty, hasMore)
  • loading → empty:resolveResults([], _)
  • loading → error:rejectQuery(err)
  • error → loading:retry()
  • 任意状态 + clear() → idle,清空 results/error/hasMore
  • 任意状态 + beginQuery(empty) → idle(不经 loading,不进 empty)

Returns​

error$​

error$: Observable<
| SearchExecutionError
| undefined>;

error 派生流;空查询/正常完成时为 undefined

hasMore$​

hasMore$: Observable<boolean>;

hasMore 派生流

results$​

results$: Observable<readonly Readonly<SearchResult>[]>;

results 派生流

snapshot​

snapshot: () => SearchStateSnapshot = current;

当前帧(同步读取)

Returns​

SearchStateSnapshot

state$​

state$: Observable<SearchState>;

状态字段的 BehaviorSubject 派生流;订阅即立刻 emit 当前值

beginQuery()​

beginQuery(query): void;

进入 loading;空查询(trim 后为空)短路回 idle,清空所有派生字段。

Parameters​

ParameterTypeDescription
querystring原始查询字符串(已经过 setQuery → debounce 之后传入)

Returns​

void

clear()​

clear(): void;

清空 → idle。释放 results/error/hasMore。

Returns​

void

destroy()​

destroy(): void;

销毁底层 Subject(释放 GC);销毁后所有方法行为未定义,调用方负责确保不再使用。

Returns​

void

rejectQuery()​

rejectQuery(error): void;

查询失败;进入 error,保留上一次 results 与 hasMore。

Parameters​

ParameterType
errorSearchExecutionError

Returns​

void

resolveResults()​

resolveResults(results, hasMore): void;

查询成功结算;空数组 → empty,否则 → success。

Parameters​

ParameterType
resultsreadonly SearchResult[]
hasMoreboolean

Returns​

void

retry()​

retry(): void;

在 error 状态发起 retry() → 回到 loading,清空 error。 非 error 状态调用为 no-op(防御性,状态机外部应保证不滥用)。

Returns​

void