NODEJS工程-通用GET方法

。智能获取方法GET 每个表都自动有的 (主要作用是将获取数据的许多设置交给前端 减少接口修改次数)

。前端应了解只获取需要的最少字段 可以减少传输 一般是不获取所有字段的

。前端应了解无必要不要修改WHERE条件的顺序 因为字段顺序不一致不会用到数据库索引  

。如果需要修改where字段顺序 访问量又会比较大的应知会后端优化性能(虽然有监控数据 但是思维要跟上)

。但是如果接口定死了 特别是新业务需求变动太频繁会造成接口修改次数过多 工作量过大

。所以才有这样的设置将获取的字段数 排序及行数决定权都交给前端

。GET 用于重写(比如增加权限)

get(): Promise {     

        return this._get();

    }

。_get 具体实现 可输入参数

 _get(where?: string, colp?: string[]): Promise {

        const self = this;

        //colp = colp || this.cols;

        where = where || "";

        const up = self.up;

        return new Promise(async (resolve, reject) => {

            try {

                await this._upcheck();

            } catch (e) {

                reject(e);

                return;

            }

            colp = colp || up.cols;//修改列

            if (where == "" && up.pars.length >= 1) {

                for (var i = 0; i < up.pars.length; i++) {

                    where += " and " + colp[i] + "=?";

                }

            }

            var sb = 'SELECT ' + colp.join(",") + ",id,upby,uptime FROM " + self.tbname

                + " WHERE " + self.uidcid + '=? ' + where;

            if (self.haveoldid)

                sb += " and oldid is null";

            if (up.order !== "idpk")

                sb += '  order by ' + up.order;

            sb += ' limit ' + up.getstart + ',' + up.getnumber;

            var values = [up[self.uidcid]];

            if (where !== '')

                values = values.concat(up.pars);

            let tb = await self.mysql1.doGet(sb, values, up);

            resolve(tb);

        });

    }

后端用法:

。重写增加权限

//查询

get(): Promise {

        const self = this;

        const up = self.up;

        return new Promise(async (resolve, reject) => {

            try {

                await this._upcheck();

            } catch (e) {

                reject(e);

                return;

            }

            let power = await self._vidateforuid(self.tbname + "_get");

            //await self._addWarn(JSON.stringify(power), "sys_sql", "services", "services_dinpay");

            if (power["code"] != 200) {

                resolve(power["errmsg"]);

                return;

            }

            let back = await self._get();

            resolve(back);

        });

    }

。重写增加条件


。以后联表查询的应该也写成这样的接口 方便前端

前端用法(主要是将获取数据的许多设置交给前端 减少接口修改次数):

。例如表景区基本表有字段place kind viewname

。自定义获取的字段 ex:只获取地点和景区名 up.cols=[place, viewname]

。自定义获取的条件(必须是按顺序)

。。例如按地点和类别查找 up.pars=[广州,测试类别]

就会转换为where uidcid=? and place=? and kind=?

。。例如按地点查找up.pars=[广州]

就会转换为where uidcid=? and place=? 

。。如果按类别 地点查找 up.cols=[kind,viewname,place](总之把你要的条件放到最前面来)

up.pars=[测试类别]就会转换为where uidcid=? and kind=? 

。自定义排序字段up.order=viewname

。自定义获取的行数或分页up.getstart=1 up.getnumber=10即1~10行 翻页即up.getstart+=up.getnumber 注意up.getnumber不变

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一,apk以进程的形式运行,进程的创建是由zygote。 参考文章《深入理解Dalvik虚拟机- Android应...
    Kevin_Junbaozi阅读 2,905评论 0 12
  • 弄懂js异步 讲异步之前,我们必须掌握一个基础知识-event-loop。 我们知道JavaScript的一大特点...
    DCbryant阅读 2,752评论 0 5
  • 加入写作群心得: 1.每天写作很重要,对于养成习惯的高频小套路很有用可,可如果不是刚需,哪怕有技巧也很难持续去做。...
    用户更新中阅读 125评论 0 0
  • 生活总有那么些时刻,令我觉得胸中瞬间拥堵,不得不对天长叹一声,“钱到用时方恨少啊。”比如,受够了同事的阴阳怪...
    名为黛玉字李逵阅读 550评论 0 0
  • 这座安静的小院 隐居在一所学校后面 平时紧闭的木门 会被温暖的阳光打开 请出深居简出的主人 你会常常看见 一位瘦骨...
    金指尖的花园阅读 348评论 1 8