美文网首页
NODEJS工程-通用GET方法

NODEJS工程-通用GET方法

作者: 778878net | 来源:发表于2018-05-19 08:42 被阅读0次

。智能获取方法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不变

相关文章

网友评论

      本文标题:NODEJS工程-通用GET方法

      本文链接:https://www.haomeiwen.com/subject/hllodftx.html