成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Query.js - 類SQL前端數(shù)據(jù)查詢類庫

MASAILA / 717人閱讀

摘要:使用實(shí)現(xiàn)的一個類的用于在前端查詢數(shù)據(jù)的類庫。通過內(nèi)置鉤子函數(shù)對字段進(jìn)行格式化。對數(shù)據(jù)集和查詢條件進(jìn)行重置。銷毀實(shí)例靜態(tài)方法屬性添加自定義格式化鉤子函數(shù)鉤子名稱鉤子方法添加一個重置標(biāo)題的鉤子函數(shù)我是格式化后的標(biāo)題我是格式化后的標(biāo)題版本號

使用JavaScript實(shí)現(xiàn)的一個類SQL的用于在前端查詢數(shù)據(jù)的類庫。基本接口參考了thinkphp查詢語法的實(shí)現(xiàn)。

Example Github 如何使用
// 支持 umd

var data = [] // 數(shù)據(jù)
var query = new Query(data)
實(shí)例方法 range
Description
[Parameter Collections] 從數(shù)據(jù)中選取一個從開始索引(start)到一個結(jié)束索引(end)之間的部分的淺拷貝出來作為目標(biāo)對象,參數(shù)同Array.prototype.slice。多次調(diào)用以最后一次收集到的參數(shù)為準(zhǔn)。
Syntax
/**
 * @param {Number} start
 * @param {Number} end 
 */
query.range(start, end)
Example
query.range(0, 10)
to/format
Description
[Parameter Collections] 通過內(nèi)置鉤子函數(shù)(hooks)對字段進(jìn)行格式化。
Document
內(nèi)置鉤子函數(shù)(format hooks)
Syntax
/**
 * @param {String} field 待格式化字段
 * @param {String} type 鉤子函數(shù)名稱
 * @param {Object} options 可用配置項(xiàng)
 */
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 表達(dá)式
 * @param {String | Function} condition 條件
 * @param {String} relation {and(default) | or} 與上次where結(jié)果的關(guān)系
 */
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] 根據(jù)字段對結(jié)果集分組,返回新的結(jié)果集。一個字段只能分組一次。
Syntax
/**
 * @param {String} field 待分組的字段
 */
query.group(field)
Example
query.group("author")
/**
 * result
 * [
 *   "smohan": {count: 22, list:[...]},
 *   "流云諸葛": {count: 1, list: [...]},
 *   ...   
 * ]
 */     
skip
Description
[Parameter Collections] 用于分頁時指定開始查詢的起始行數(shù)。
Syntax
/**
 * @param {Number} skip 指定起始行數(shù)
 */
query.skip(skip)
Example
// 從第0行開始查詢
query.skip(0)     
limit
Description
[Parameter Collections] 用于分頁時指定查詢的數(shù)量。
Syntax
/**
 * @param {Number} limit 指定查詢的數(shù)量
 */
query.limit(limit)
Example
// 查詢10條結(jié)果
query.limit(10)
// 從第5條開始查詢10條結(jié)果
query.skip(5).limit(10)     
sort
Description
[Parameter Collections] 對查詢結(jié)果進(jìn)行排序,輸出排序后的結(jié)果。
Syntax
/**
 * @param {String | Object} field 待排序的字段
 * @param {String | void} type 排序類型 [asc|desc]
 */
query.sort(field, type)
Example
// 按order的降序排序,如果order一樣,則再按照創(chuàng)建時間的降序排序
query
  .sort("order", "desc")
  .sort("createTime", "desc")

// 同時指定多個排序方式
query.sort({
  create_time: "desc",
  id: "desc",
  name: "asc"
})
count
Description
[Export results] 返回經(jīng)過查詢后的結(jié)果的總數(shù),如果需要分頁,建議在分頁前調(diào)用該方法。
Syntax
/**
 * @returns {Number}
 */
query.count()
Example
query.count()
find
Description
[Export results] 返回經(jīng)過查詢后的結(jié)果集。
Syntax
/**
 * @returns {Array}
 */
query.find()
Example
query.find()
reset
Description
對數(shù)據(jù)集和查詢條件進(jìn)行重置。一旦調(diào)用find()/count()方法后,目標(biāo)集合將會被改變,此時如果需要對源數(shù)據(jù)進(jìn)行重新查詢,需要調(diào)用該方法。
Syntax
query.reset()
Example
query.reset()
//.where()
//...
destroy
Description
銷毀實(shí)例
Syntax
query.destroy()
靜態(tài)方法/屬性 hooks
Description
[Static Method] 添加自定義格式化鉤子函數(shù)
Syntax
/**
 * @param {String} name 鉤子名稱
 * @param {function} handler 鉤子方法
 */
Query.hooks(name, handler)
Example
// 添加一個重置標(biāo)題的鉤子函數(shù)
Query.hooks("myTitle", function(value) {
  return "我是格式化后的標(biāo)題:" + value
})

// use
query.to("title", "myTitle", {new: true})
// result: 
// $title: "我是格式化后的標(biāo)題:title"
version
Description
[Static Attribute] 版本號
Syntax
Query.version
Example Github

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95101.html

相關(guān)文章

  • nodejs如何簡潔優(yōu)雅的訪問mysql數(shù)據(jù)

    摘要:如何簡潔優(yōu)雅的訪問數(shù)據(jù)庫一前言誕生以來出現(xiàn)了一大批的框架如等等,前端可以不再依賴后端可以自己控制服務(wù)端的邏輯。今天我們就來說說前端在中如何操作數(shù)據(jù)庫。 nodejs如何簡潔優(yōu)雅的訪問mysql數(shù)據(jù)庫一、前言nodejs誕生以來出現(xiàn)了一大批的web框架如express koa2 egg等等,前端可以不再依賴后端可以自己控制服務(wù)端的邏輯。今天我們就來說說前端在nodejs中如何操作mysq...

    jlanglang 評論0 收藏0
  • 貼一貼我的后端開發(fā)面試題

    摘要:線程有幾種狀態(tài)生命周期是怎樣的線程有五種狀態(tài)創(chuàng)建就緒運(yùn)行阻塞死亡。當(dāng)線程獲得到等待的資源資源或者引起阻塞的條件得到滿足時調(diào)用或,會從阻塞狀態(tài)進(jìn)入就緒狀態(tài)。使用,允許最多個線程同時訪問資源。 轉(zhuǎn)載請注明出處: 貼一貼我的后端開發(fā)面試題。 本文是面試回寢室后憑記憶羅列出來的問題,大概90%的問題都在這里面了,有幾個問題的實(shí)在是想不起來了= =,有些問題自我感覺回答的不好,所以我是查了資料...

    Batkid 評論0 收藏0
  • Java 征途:行者的地圖

    摘要:老實(shí)說,當(dāng)時一進(jìn)入世界的大門就暈了,各種規(guī)范概念和英文縮寫詞能把人整的暈暈乎乎。等新的英文縮寫又出現(xiàn)了,一口老血還沒來得及噴出,又重新振作開始新的學(xué)習(xí)征程。 showImg(http://upload-images.jianshu.io/upload_images/1131767-1c5d16e39435df10.jpg?imageMogr2/auto-orient/strip%7Ci...

    dkzwm 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<