• 首页
  • 产品中心
    • 数式Oinone四大产品

      低代码开发平台无代码开发平台集成开发平台AI大模型开发
    • 数式Oinone体系能力

      用户与组织权限管理文件管理消息中心国际化业务审计
    • 数式Oinone核心产品特性

      低无一体面向软件公司场景无限制应用级扩容可分可合
  • 服务中心
    • 客户服务

      预约演示方案咨询私有部署找人定制
    • 开发者

      问答下载
    • Oinone学院

      社区学习

    《精讲面向软件公司的低代码平台——以Oinone为例》

  • 合作伙伴
    渠道申请伙伴名录专家库
  • 关于数式
0571-88757863

RSQL Service


The RSQL protocol is a standard protocol in Oinone that provides query conditions. Understanding and learning the syntax and usage of RSQL is very meaningful for learning Oinone.

Ⅰ. RSQL Protocol

(Ⅰ) What is RSQL?

RSQL is a query language that uses "SQL-like syntax" to represent conditional expressions. RSQL is not bound to any specific database or storage engine, but relies on your existing code and data.

For more reference materials:

  • Oinone Gateway Protocol API
  • RSQL Parser (Backend)
  • RSQL Parser (Frontend)

Note

For information about RSQL logical operators and comparison operators, please refer to: Oinone Gateway Protocol API

(Ⅱ) Why Oinone Chooses RSQL?

  • Complete conditions: For standard data types, the built-in operators provided by RSQL are sufficient to meet the query needs of various business scenarios.
  • Extensible operators: For special binary types, Oinone has extended their operators to support query needs of more business scenarios.
  • No direct communication with any middleware: The conditional expressions supported by RSQL syntax will be converted into database query syntax supported by Oinone, ES query syntax, or even directly execute the corresponding expressions to output results during actual operation. The execution process of the expressions is controllable.

Ⅱ. Usage of RSQL Tool Classes

(Ⅰ) RSQLHelper

The RSQL expression is the conditional expression protocol used in Oinone Kunlun. The RSQLHelper tool class provides functions such as parsing, editing, and calculation of RSQL. The following are examples of common usages of the RSQLHelper tool class.

1. RSQL Parsing

const root = RSQLHelper.parseRSQL("name =like= 'a'");
if (root) {
  console.log(RSQLHelper.toRSQL(root), root);
}

// Console output
// name =like= 'a' TreeNode structured data

2. RSQL Calculation

console.log(
  RSQLHelper.computeRSQL("name =like= 'a'", {
    name: 'abc'
  })
);

// Console output
// true

console.log(
  RSQLHelper.computeRSQL("name =like= 'a'", {
    name: 'def'
  })
);

// Console output
// false

3. RSQL Appending

Cooperate with RSQLCondition to continue processing RSQL expression structured data.

console.log(RSQLCondition.wrapper(RSQLHelper.parseRSQL("name =like= 'a'")).like('name', 'b').toString());

// Console output
// name =like= 'a' and name =like= 'b'

(Ⅱ) Condition (Old Version)

When we need to construct an RSQL expression, we can use the Condition class for auxiliary construction. The following are examples of common usages of the Condition tool class.

1. Basic Usage

console.log(new Condition('name').like('demo').toString());

// Console output
// name=like='demo'

2. Logical Operators

console.log(new Condition('name').like('demo').or(new Condition('name').like('test')).toString());

// Console output
// (name=like='demo') or (name=like='test')

3. Numbers

console.log(
  new Condition('count').greaterThanOrEqualTo(1).and(new Condition('count').lessThanOrEqualTo(100)).toString()
);

// Console output
// (count=ge=1) and (count=le=100)

4. Enums and Dates

console.log(
  new Condition('status')
    .equal('INSTALLED')
    .and(new Condition('createDate').greaterThanOrEqualTo('2025-06-10 00:00:00'))
    .toString()
);

// Console output
// (status=='INSTALL') and (createDate=ge='2025-06-10 00:00:00')

Note

The specific format of the date and time needs to be passed according to the value formatting string. The mapping rules between the value formatting string and the field business type are as follows:

  • DATETIME: YYYY-MM-DD HH:mm:ss
  • DATE: YYYY-MM-DD
  • TIME: HH:mm:ss
  • YEAR: YYYY

5. Multi - value Operators (in, out...)

console.log(new Condition('status').in(['INSTALLED', 'UPGRADED']).toString());

// Console output
// status=in=(INSTALLED,UPGRADED)

(Ⅲ) RSQLCondition (New Version)

In order to cooperate with the RSQLHelper for functions such as parsing, editing, and calculation of RSQL expressions, the RSQLCondition tool class will gradually replace all functions of the Condition tool class and add more user-friendly API operations.

1. Basic Usage

console.log(RSQLCondition.wrapper().like('name', 'demo').toString());

// Console output
// name =like= 'demo'

2. Logical Operators

console.log(RSQLCondition.wrapper().like('name', 'demo').or().like('name', 'test').toString());

// Console output
// name =like= 'demo' or name =like= 'test'

console.log(
  RSQLCondition.wrapper()
    .like('name', 'demo')
    .like('name', 'test')
    .or((condition) => condition.starts('code', 'demo_').ends('code', '_test'))
    .eq('status', 'INSTALLED')
    .toString()
);

// Console output
// ((name =like= 'demo' and name =like= 'test') or (code =starts= 'demo_' and code =ends= '_test')) and status == 'INSTALLED'

Note

Compared with the Condition tool class, RSQLCondition provides more user-friendly API operations for sub - expressions.

3. Numbers

console.log(RSQLCondition.wrapper().ge('count', 1).le('count', 100).toString());

// Console output
// count =ge= 1 and count =le= 100

Note

Different from the Condition tool class, the logical operator and will be automatically spliced when the operator methods are called continuously.

4. Enums and Dates

console.log(RSQLCondition.wrapper().eq('status', 'INSTALLED').ge('createDate', '2025-06-10 00:00:00').toString());

// Console output
// status == 'INSTALLED' and createDate =ge= '2025-06-10 00:00:00'

5. Multi - value Operators (in, out...)

console.log(RSQLCondition.wrapper().in('status', ['INSTALLED', 'UPGRADED']).toString());

// Console output
// status =in= ('INSTALLED', 'UPGRADED')
Edit this page
Last Updated:1/14/26, 8:45 AM
Prev
HttpClient Service
Next
Message Hub Service
默认页脚
Copyright © 2026 Mr.Hope