前言
cpr-query-builder 是一款轻量级的 JavaScript 库,用于构建查询条件。它允许用户通过简单的组合方式,使用自然语言来构建查询条件。cpr-query-builder 可以帮助前端开发人员快速地构建查询界面,并得到清晰的查询解决方案。
安装
cpr-query-builder 可以使用 npm 添加至任何 JavaScript 项目中。要安装 cpr-query-builder,只需要在终端中运行以下命令:
npm install cpr-query-builder
快速使用
cpr-query-builder 提供了一种简单的方法来构建一个查询对象。以下是一些有用的函数:
-- -------------------- ---- ------- ----- --- - ----------------------------- ----- ----- - ----------- ------------------------------------- -------------------------------------------- ------------- ---------------------------------- ------------------------------------- ---- ------------------------------展开代码
这个示例使用了 cpr-query-builder,它构建了一个查询条件对象。在本例中,我们构建了一个查询,查询年龄大于等于 30,而名称为 John,性别为 male 或 unknown。
API
cpr.query()
cpr.query() 用于创建一个新的查询条件。它不需要参数。它返回了一个 QueryBuilder 对象。
const query = cpr.query();
QueryBuilder.add(rule)
QueryBuilder.add(rule) 用于向查询中添加新的规则。规则可以是一个 Rule 对象或者是一个包含规则的数组。
const query = cpr.query() .add(cpr.attr('name').equals('John')) .add(cpr.attr('age').greaterThanOrEqual(30)) .add(cpr.or([ cpr.attr('gender').equals('male'), cpr.attr('gender').equals('unknown'), ]));
cpr.attr(name)
cpr.attr(name) 用于创建一个新的 Attribute 对象。它需要一个字符串类型的参数 name。它返回了一个 AttributeBuilder 对象。
const attribute = cpr.attr('name');
AttributeBuilder.equals(value)
AttributeBuilder.equals(value) 用于创建一个等于指定值的规则。它需要一个任意类型的参数 value。它返回了一个 Rule 对象。
const rule = cpr.attr('name').equals('John');
AttributeBuilder.notEquals(value)
AttributeBuilder.notEquals(value) 用于创建一个不等于指定值的规则。它需要一个任意类型的参数 value。它返回了一个 Rule 对象。
const rule = cpr.attr('name').notEquals('Mike');
AttributeBuilder.greaterThan(value)
AttributeBuilder.greaterThan(value) 用于创建一个大于指定值的规则。它需要一个任意类型的参数 value。它返回了一个 Rule 对象。
const rule = cpr.attr('age').greaterThan(18);
AttributeBuilder.lessThan(value)
AttributeBuilder.lessThan(value) 用于创建一个小于指定值的规则。它需要一个任意类型的参数 value。它返回了一个 Rule 对象。
const rule = cpr.attr('age').lessThan(30);
AttributeBuilder.greaterThanOrEqual(value)
AttributeBuilder.greaterThanOrEqual(value) 用于创建一个大于等于指定值的规则。它需要一个任意类型的参数 value。它返回了一个 Rule 对象。
const rule = cpr.attr('age').greaterThanOrEqual(18);
AttributeBuilder.lessThanOrEqual(value)
AttributeBuilder.lessThanOrEqual(value) 用于创建一个小于等于指定值的规则。它需要一个任意类型的参数 value。它返回了一个 Rule 对象。
const rule = cpr.attr('age').lessThanOrEqual(30);
AttributeBuilder.between(min, max)
AttributeBuilder.between(min, max) 用于创建一个在指定区间内的规则。它需要两个参数:min 和 max,表示可选值得最小和最大值。它返回了一个 Rule 对象。
const rule = cpr.attr('age').between(18, 30);
AttributeBuilder.notBetween(min, max)
AttributeBuilder.notBetween(min, max) 用于创建一个在指定区间外的规则。它需要两个参数:min 和 max,表示排除值得最小和最大值。它返回了一个 Rule 对象。
const rule = cpr.attr('age').notBetween(18, 30);
AttributeBuilder.in(values)
AttributeBuilder.in(values) 用于创建一个包含在指定值集合中的规则。它需要一个数组类型的参数 values,表示可选值集合。它返回了一个 Rule 对象。
const rule = cpr.attr('gender').in(['male', 'female', 'unknown']);
AttributeBuilder.notIn(values)
AttributeBuilder.notIn(values) 用于创建一个不包含在指定值集合中的规则。它需要一个数组类型的参数 values,表示排除值得集合。它返回了一个 Rule 对象。
const rule = cpr.attr('gender').notIn(['male', 'unknown']);
AttributeBuilder.contains(value)
AttributeBuilder.contains(value) 用于创建一个包含指定字符串的规则。它需要一个字符串类型的参数 value,表示要查找的内容。它返回了一个 Rule 对象。
const rule = cpr.attr('name').contains('John');
AttributeBuilder.notContains(value)
AttributeBuilder.notContains(value) 用于创建一个不包含指定字符串的规则。它需要一个字符串类型的参数 value,表示要排除的内容。它返回了一个 Rule 对象。
const rule = cpr.attr('name').notContains('Mike');
cpr.and(rules)
cpr.and(rules) 用于创建一个 AND 查询。它需要一个规则数组类型的参数 rules,表示要匹配的规则集。它返回了一个 CompositeRule 对象。
const rule = cpr.and([ cpr.attr('name').equals('John'), cpr.attr('age').greaterThanOrEqual(30), ]);
cpr.or(rules)
cpr.or(rules) 用于创建一个 OR 查询。它需要一个规则数组类型的参数 rules,表示要匹配的规则集。它返回了一个 CompositeRule 对象。
const rule = cpr.or([ cpr.attr('name').equals('John'), cpr.attr('gender').equals('unknown'), ]);
Rule.toString()
Rule.toString() 用于将规则转换为字符串。它不需要参数。它返回一个描述规则的字符串。
const rule = cpr.attr('name').equals('John'); console.log(rule.toString()); // "name == John"
结语
cpr-query-builder 提供了一种简单的方法来构建查询对象,可以用于各种类型的数据过滤和筛选。本篇文章介绍了 cpr-query-builder 的基本用法和 API,希望可以帮助你快速了解和使用这个工具包。
示例代码
-- -------------------- ---- ------- ----- --- - ----------------------------- ----- ----- - ----------- ------------------------------------- -------------------------------------------- ------------- ---------------------------------- ------------------------------------- ---- ------------------------------展开代码
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055a3881e8991b448d7db7