Skip to content

数据查询

Query Param DTS

查询条件配置类型描述

ts
export type CONDITION_TYPE = Record<string, VALUE_TYPE | ConditionOption>

/**
 * 值类型
 */
export type VALUE_TYPE =
  | string
  | number
  | Date
  | boolean
  | undefined
  | null
  | Array<any>

/**
 * 查询条件配置项
 */
export interface ConditionOption {
  /**
   * 匹配值
   */
  value?: VALUE_TYPE
  /**
   * 等式类型
   */
  type?: CONDITION_EQUATION_TYPE
  /**
   * 是否为或语句
   */
  or?: boolean
  /**
   * 表名或表别名
   */
  t?: string
  /**
   * 子查询
   */
  subquery?: QueryOption
}

/**
 * 查询字段配置
 */
export interface FIELD_OPTION {
  /**
   * 字段名
   */
  name: string
  /**
   * 字段别名
   */
  alias?: string
  /**
   * 表名或表别名
   */
  t?: string
}

/**
 * 查询字段配置类型
 */
export type FIELDS_OPTION = string | FIELD_OPTION | Array<FIELD_OPTION | string>

/**
 * 查询语句配置项
 */
export interface QueryOption {
  /**
   * 表信息
   */
  t: TABLE_OPTION
  /**
   * 查询条件
   */
  condition?: CONDITION_TYPE
  /**
   * 查询字段
   */
  fields?: FIELDS_OPTION
  /**
   * 查询条目区间
   */
  limit?: LIMIT_PARAM
  /**
   * 表连接查询配置信息
   */
  join?: JOIN_PARAM_TYPE | JOIN_PARAM_TYPE[]
  /**
   * 排序
   */
  orderBy?: OrderByOption
}

Example

ts
import emysql from '@dpapejs/emysql'

// 数据库实例化
const mysql = new emysql({
  password: '[db登录密码]',
  user: '[db登录用户名]',
  database: '访问数据库名称'
})

// t_user 数据
const user = [
  { name: 'name1', age: 20 },
  { name: 'name2', age: 21 },
  { name: 'name3', age: 30 },
  { name: 'name4', age: 31 },
  { name: 'name5', age: 18 }
]
// 查询年龄大于等于20的用户
const result = await mysql.query({
  t: 't_user',
  fields: ['name'],
  condition: { age: { value: 20, type: 'GREATER_THAN_OR_EQUAL' } }
})

// result::  [{ name: 'name1' },{ name: 'name2' },{ name: 'name3' },{ name: 'name4' }]