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
state$
state$: Observable<SearchState>;
状态字段的 BehaviorSubject 派生流;订阅即立刻 emit 当前值
beginQuery()
beginQuery(query): void;
进入 loading;空查询(trim 后为空)短路回 idle,清空所有派生字段。
Parameters
| Parameter | Type | Description |
|---|---|---|
query | string | 原始查询字符串(已经过 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
| Parameter | Type |
|---|---|
error | SearchExecutionError |
Returns
void
resolveResults()
resolveResults(results, hasMore): void;
查询成功结算;空数组 → empty,否则 → success。
Parameters
| Parameter | Type |
|---|---|
results | readonly SearchResult[] |
hasMore | boolean |
Returns
void
retry()
retry(): void;
在 error 状态发起 retry() → 回到 loading,清空 error。
非 error 状态调用为 no-op(防御性,状态机外部应保证不滥用)。
Returns
void