woods-waterfall-promise

基于promise封装的模拟数据库查询的方法,可以根据自己需要注册自定义的方法

Usage no npm install needed!

<script type="module">
  import woodsWaterfallPromise from 'https://cdn.skypack.dev/woods-waterfall-promise';
</script>

README

woods-waterfall-promise

实例方法

方法名说明参数 select:挑取想要的字段;keys: string[] filter:对查询数据进行过滤; callback: (item: any) => boolean order: 对查询数据进行排序; options: { orderType: -1 | 1 (1升序、-1降序); orderField: string (用于排序对字段名) } offset: 偏移量; ofs: number limit: 截取前几条数据; lmt: number

使用

const arr = [
    { name: '物理学', id: 7, description: null, price: 33.99 },
    { name: '传统艺术', id: 8, description: null, price: 77.00 },
    { name: '解剖学', id: 14, description: null, price: 45.66 },
    { name: '解剖学', id: 15, description: null, price: 56.77 },
]
async function run() {
    const result = await new WaterFall((resolve, reject) => {
        resolve(arr)
    })
        // .filter(it => it.id > 10)
        // .exactly({name: "解剖学", id: 15})
        .order({ orderType: -1, orderField: "price" })
        // .offset(2)
        .limit(3)
        // .select(["name", "id"])
    console.log("result:", result)
}
run();

内部用于注册的静态方法:

方法名说明参数 registry用户可以根据自己需要,自定义注册自己的方法methodName: string, methodGenerator: (options: any) => (arr: Item[]) => Item[]

使用

const WaterFall = require("woods-waterfall-promise");
//注册
const exactlyGenerator = conditions => {
    const conditionsKeys = Object.keys(conditions);
    return function (arr) {
        return arr.filter(it => {
            return conditionsKeys.reduce((result, key) => {
                return result && it[key] === conditions[key];
            }, true)
        })
    }
}
WaterFall.registry('exactly', exactlyGenerator);
//使用
async function runExactly() {
    const result = await new WaterFall((resolve, reject) => {
        resolve(arr)
    })
        .exactly({name: "解剖学", id: 15})
        .select(["name", "id"])
    console.log("result:", result)
}
runExactly();