★ wanayoo — archive 1999 https://github.com/S-mohan/queryNouvelle recherche | Portail wanayoo
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Query

类SQL前端数据查询类库

Example

example 1: SQl组装

example 2: 数据列表

如何使用

// 支持 umd
<script src="./build/query.js"></script>
var data = [] // 数据
var query = new Query(data)

实例方法

range

Description

[Parameter Collections] 从数据中选取一个从开始索引(start)到一个结束索引(end)之间的部分的浅拷贝出来作为目标对象,参数同Array.prototype.slice。多次调用以最后一次收集到的参数为准。

Syntax
/**
 * @param {Number} start
 * @param {Number} end 
 */
query.range(start, end)
Example
query.range(0, 10)

to/format

Description

[Parameter Collections] 通过内置格式化函数(hooks)对字段进行格式化。

Document
内置格式化函数(format hooks)
Syntax
/**
 * @param {String} field 待格式化字段
 * @param {String} type 格式化函数名称
 * @param {Object} options 可用配置项
 */
query.to(field, type, options) / query.format(field, type, options)
Example
// 'createTime': '2017-09-08T15:26:03.896Z',
query.to('createTime', 'date', {args: ['yy-MM-dd'], new: 'date'})
// $date: '2017-09-08'

where

Description

[Parameter Collections] 条件查询语句

Document
Syntax
/**
 * @param {String} field 字段
 * @param {String} expression 表达式
 * @param {String | Function} condition 条件
 * @param {String} relation {and(default) | or} 与上次where结果的关系
 */
query.where(field, expression, condition, relation)
Example
query
  .where('author', 'eq', 'smohan')
  .where([['title', 'like', 'javascript'], ['tags', 'like', 'javascript', 'or'] ])
  .where('count.comments', 'gt', 0)
// author === 'smohan' && (title like 'javascript' || tags like 'javascript') && 'count.comments > 0'     

group

Description

[Parameter Collections] 根据字段对结果集分组,返回新的结果集。一个字段只能分组一次。

Syntax
/**
 * @param {String} field 待分组的字段
 */
query.group(field)
Example
query.group('author')
/**
 * result
 * [
 *   'smohan': {count: 22, list:[...]},
 *   '流云诸葛': {count: 1, list: [...]},
 *   ...   
 * ]
 */     

skip

Description

[Parameter Collections] 用于分页时指定开始查询的起始行数。

Syntax
/**
 * @param {Number} skip 指定起始行数
 */
query.skip(skip)
Example
// 从第0行开始查询
query.skip(0)     

limit

Description

[Parameter Collections] 用于分页时指定查询的数量。

Syntax
/**
 * @param {Number} limit 指定查询的数量
 */
query.limit(limit)
Example
// 查询10条结果
query.limit(10)
// 从第5条开始查询10条结果
query.skip(5).limit(10)     

sort

Description

[Parameter Collections] 对查询结果进行排序,输出排序后的结果。

Syntax
/**
 * @param {String | Object} field 待排序的字段
 * @param {String | void} type 排序类型 [asc|desc]
 */
query.sort(field, type)
Example
// 按order的降序排序,如果order一样,则再按照创建时间的降序排序
query
  .sort('order', 'desc')
  .sort('createTime', 'desc')

// 同时指定多个排序方式
query.sort({
  create_time: 'desc',
  id: 'desc',
  name: 'asc'
})

count

Description

[Export results] 返回经过查询后的结果的总数,如果需要分页,建议在分页前调用该方法。

Syntax
/**
 * @returns {Number}
 */
query.count()
Example
query.count()

find

Description

[Export results] 返回经过查询后的结果集。

Syntax
/**
 * @returns {Array}
 */
query.find()
Example
query.find()

reset

Description

对数据集和查询条件进行重置。一旦调用find()/count()方法后,目标集合将会被改变,此时如果需要对源数据进行重新查询,需要调用该方法。

Syntax
query.reset()
Example
query.reset()
//.where()
//...

destroy

Description

销毁实例

Syntax
query.destroy()

静态方法/属性

hooks

Description

[Static Method] 添加自定义格式化函数

内置格式化函数(format hooks)
Syntax
/**
 * @param {String} name 钩子名称
 * @param {function} handler 钩子方法
 */
Query.hooks(name, handler)
Example
// 添加一个重置标题的格式化函数
Query.hooks('myTitle', function(value) {
  return '我是格式化后的标题:' + value
})

// use
query.to('title', 'myTitle', {new: true})
// result: 
// $title: '我是格式化后的标题:title'

version

Description

[Static Attribute] 版本号

Syntax
Query.version
You can’t perform that action at this time.