@dudousxd/nestjs-filter-client

中文文档
2.0.1发布于 2026/11/12MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 2566

@dudousxd/nestjs- filter 的客户端查询构建器.

中文使用文档
文档目录12 节
  1. 安装
  2. 使用量
  3. 方便方法
  4. 与OR/和
  5. 查询字符串输出
  6. 使用获取
  7. 用作 POST 机体
  8. API 密码
  9. 类型
  10. UnpagedFilterQuery —— 查询减去页面
  11. ColumnFilterClause - 上游条款和仅属于集团的条款
  12. 许可证

@dudousxd/nestjs-filter-客户端

客户端查询构建器 @dudousxd/nestjs-filter。零依赖性,在浏览器和节点.js中运行.

安装

npm install @dudousxd/nestjs-filter-client

使用量

import { filterQuery } from '@dudousxd/nestjs-filter-client';

// Build a filter query
const query = filterQuery()
  .where('name', 'contains', 'fleet')
  .where('status', ['COMPLETED', 'FAILED'])
  .where('age', 'gte', 18)
  .build();
// → { where: [
//     { field: 'name', operator: 'contains', value: 'fleet' },
//     { field: 'status', operator: 'in', value: ['COMPLETED', 'FAILED'] },
//     { field: 'age', operator: 'gte', value: 18 },
//   ] }

方便方法

filterQuery()
  .equals('status', 'active')
  .contains('name', 'fleet')
  .in('role', ['admin', 'editor'])
  .between('age', 18, 65)
  .gte('createdAt', '2026-01-01')
  .isNull('deletedAt')
  .set('page', 1)
  .set('size', 25)
  .build();

与OR/和

filterQuery()
  .where('status', 'active')
  .or(q => q
    .where('name', 'contains', 'sync')
    .where('email', 'contains', 'sync')
  )
  .build();

查询字符串输出

const qs = filterQuery()
  .where('name', 'contains', 'fleet')
  .where('status', ['COMPLETED', 'FAILED'])
  .toQueryString();
// → "name[contains]=fleet&status[]=COMPLETED&status[]=FAILED"

使用获取

const qs = filterQuery()
  .contains('name', 'fleet')
  .gte('createdAt', '2026-01-01')
  .set('page', 1)
  .toQueryString();

const res = await fetch(`/api/users?${qs}`);

用作 POST 机体

const body = filterQuery()
  .where('name', 'contains', 'fleet')
  .or(q => q
    .where('role', 'admin')
    .where('role', 'editor')
  )
  .build();

const res = await fetch('/api/users', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(body),
});

API 密码

方法说明
where(field, value)等于过滤器( 阵列自动检测为 in(中文(简体) )
where(field, operator, value)带有明确运算符的过滤器
equals(field, value)等号的快手
contains(field, value)包含的快手
in(field, values)输入时的快手
between(field, low, high)介于两者之间的简称
gt 编号 : gte 编号 : lt 编号 : lte比较快手
isNull 编号 : isNotNull无法检查简称
isEmpty 编号 : isNotEmpty空检查快取
startsWith 编号 : endsWith字符串匹配的简称
or(callback)OR组
and(callback)和组
set(key, value)添加额外的密钥( 如页面, 大小)
build()回返 FilterQueryResult 对象
toQueryString()返回 URL 查询字符串
toFlatObject()返回自动字段的平面对象

类型

类型这是什么
FilterQueryResult什麽 build() 返回: 整个信封, 包含
UnpagedFilterQuery同一个信封 无 paginate —— 说 FilterQueryResult 扩展它
ColumnFilter一个前提: field + 键 operator (+ 数) value(中文(简体) )
ColumnFilterGroup纯布尔组 : { OR: [...] } 编号 : { AND: [...] },没有字段,没有操作员
ColumnFilterClauseColumnFilter | ColumnFilterGroup - 哪个条目 filter.where 也许

UnpagedFilterQuery —— 查询减去页面

导出将呼叫窗口交给服务器( CSV 导出, 报告), a 只计数请求、预选键或缓存密钥都想要显示的查询 哪个行 不用说 哪个切片这是 UnpagedFilterQuery数字 :

import type { UnpagedFilterQuery } from '@dudousxd/nestjs-filter-client';

function exportBody(query: UnpagedFilterQuery) {
  return JSON.stringify(query); // the server decides how much it streams
}

const { paginate, ...unpaged } = filterQuery().contains('name', 'fleet').page(0, 25).build();
exportBody(unpaged);

执行 没有 访问范围 Omit<FilterQueryResult, 'paginate'> 换句话说. FilterQueryResult 携带 [key: string]: unknown 这样 set() 额外生存,和 Omit 重建类型 从 keyof 对于索引签名类型来说 string | number。奥米 因此崩溃 { [x: string]: unknown }: 每一个被命名的密钥都不见了, 每个类型 已接受,没有编译错误可告诉你. UnpagedFilterQuery 被宣布为 基础 FilterQueryResult 延伸,所以两者不能漂移.

ColumnFilterClause - 上游条款和仅属于集团的条款

条款要么是上游条款,要么是只构成其他条款的集团。 两者都是 在电线上有效(服务器的验证器有明显的组-节点分支),所以两者都 输入 :

import type { ColumnFilterClause } from '@dudousxd/nestjs-filter-client';

const where: ColumnFilterClause[] = [
  { field: 'status', operator: 'equals', value: 'active' },   // predicate
  { OR: [                                                      // group — no field, no operator
    { field: 'name', operator: 'contains', value: 'sync' },
    { field: 'email', operator: 'contains', value: 'sync' },
  ] },
];

ColumnFilter 本身没有变化 需求 field 财务报告和审定财务报表 operator数字 : 团体是工会的单独成员,而不是放松,所以 { field: 'status', value: 'active' } ——其操作员被遗忘的上游—— 仍然是编译错误.

许可证

麻省理工学院

版本与发布记录

@dudousxd/nestjs-filter-client 共发布 20 个版本,首次发布于 2026/05/25;过去 12 个月发布了 20 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.0.1latest2026/11/121 天前
1.37.02026/11/084 天前
1.33.02026/09/042 个月前
1.32.02026/09/032 个月前
1.27.02026/08/063 个月前
1.26.02026/08/013 个月前

关于 @dudousxd/nestjs-filter-client 的常见问题

@dudousxd/nestjs-filter-client 是什么?

@dudousxd/nestjs- filter 的客户端查询构建器.

如何安装 @dudousxd/nestjs-filter-client?

在项目目录运行 npm install @dudousxd/nestjs-filter-client,或使用 pnpm add / yarn add / bun add。

@dudousxd/nestjs-filter-client 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dudousxd/nestjs-filter-client 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@dudousxd/nestjs-filter-client 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dudousxd/nestjs-filter-client 可以商用吗?

@dudousxd/nestjs-filter-client 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dudousxd/nestjs-filter-client 的下载量有多少?

根据 npm 官方下载统计,@dudousxd/nestjs-filter-client 在 2026/10/13 – 2026/11/11 这 30 天内被下载 2,566 次,日均约 86 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dudousxd/nestjs-filter-client 还在维护吗?

最新版本 2.0.1 发布于 2026/11/12(1 天前);至今共发布 20 个版本,其中过去 12 个月发布了 20 个;首次发布于 2026/05/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。