摘要:使用實(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
[Parameter Collections] 從數(shù)據(jù)中選取一個從開始索引(start)到一個結(jié)束索引(end)之間的部分的淺拷貝出來作為目標(biāo)對象,參數(shù)同Array.prototype.slice。多次調(diào)用以最后一次收集到的參數(shù)為準(zhǔn)。
/** * @param {Number} start * @param {Number} end */ query.range(start, end)
query.range(0, 10)to/format
[Parameter Collections] 通過內(nèi)置鉤子函數(shù)(hooks)對字段進(jìn)行格式化。
/** * @param {String} field 待格式化字段 * @param {String} type 鉤子函數(shù)名稱 * @param {Object} options 可用配置項(xiàng) */ query.to(field, type, options) / query.format(field, type, options)
// "createTime": "2017-09-08T15:26:03.896Z", query.to("createTime", "date", {args: ["yy-MM-dd"], new: "date"}) // $date: "2017-09-08"where
[Parameter Collections] 條件查詢語句
/** * @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)
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
[Parameter Collections] 根據(jù)字段對結(jié)果集分組,返回新的結(jié)果集。一個字段只能分組一次。
/** * @param {String} field 待分組的字段 */ query.group(field)
query.group("author") /** * result * [ * "smohan": {count: 22, list:[...]}, * "流云諸葛": {count: 1, list: [...]}, * ... * ] */skip
[Parameter Collections] 用于分頁時指定開始查詢的起始行數(shù)。
/** * @param {Number} skip 指定起始行數(shù) */ query.skip(skip)
// 從第0行開始查詢 query.skip(0)limit
[Parameter Collections] 用于分頁時指定查詢的數(shù)量。
/** * @param {Number} limit 指定查詢的數(shù)量 */ query.limit(limit)
// 查詢10條結(jié)果 query.limit(10) // 從第5條開始查詢10條結(jié)果 query.skip(5).limit(10)sort
[Parameter Collections] 對查詢結(jié)果進(jìn)行排序,輸出排序后的結(jié)果。
/** * @param {String | Object} field 待排序的字段 * @param {String | void} type 排序類型 [asc|desc] */ query.sort(field, type)
// 按order的降序排序,如果order一樣,則再按照創(chuàng)建時間的降序排序 query .sort("order", "desc") .sort("createTime", "desc") // 同時指定多個排序方式 query.sort({ create_time: "desc", id: "desc", name: "asc" })count
[Export results] 返回經(jīng)過查詢后的結(jié)果的總數(shù),如果需要分頁,建議在分頁前調(diào)用該方法。
/** * @returns {Number} */ query.count()
query.count()find
[Export results] 返回經(jīng)過查詢后的結(jié)果集。
/** * @returns {Array} */ query.find()
query.find()reset
對數(shù)據(jù)集和查詢條件進(jìn)行重置。一旦調(diào)用find()/count()方法后,目標(biāo)集合將會被改變,此時如果需要對源數(shù)據(jù)進(jìn)行重新查詢,需要調(diào)用該方法。
query.reset()
query.reset() //.where() //...destroy
銷毀實(shí)例
query.destroy()靜態(tài)方法/屬性 hooks
[Static Method] 添加自定義格式化鉤子函數(shù)
/** * @param {String} name 鉤子名稱 * @param {function} handler 鉤子方法 */ Query.hooks(name, handler)
// 添加一個重置標(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
[Static Attribute] 版本號
Query.versionExample Github
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95101.html
摘要:如何簡潔優(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...
摘要:線程有幾種狀態(tài)生命周期是怎樣的線程有五種狀態(tài)創(chuàng)建就緒運(yùn)行阻塞死亡。當(dāng)線程獲得到等待的資源資源或者引起阻塞的條件得到滿足時調(diào)用或,會從阻塞狀態(tài)進(jìn)入就緒狀態(tài)。使用,允許最多個線程同時訪問資源。 轉(zhuǎn)載請注明出處: 貼一貼我的后端開發(fā)面試題。 本文是面試回寢室后憑記憶羅列出來的問題,大概90%的問題都在這里面了,有幾個問題的實(shí)在是想不起來了= =,有些問題自我感覺回答的不好,所以我是查了資料...
摘要:老實(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...
閱讀 2850·2023-04-25 20:02
閱讀 1451·2021-11-11 16:55
閱讀 637·2021-09-26 09:46
閱讀 6229·2021-09-22 15:55
閱讀 1835·2021-08-09 13:41
閱讀 1589·2019-08-30 15:52
閱讀 2391·2019-08-30 14:13
閱讀 3314·2019-08-26 13:48