egg组装数据

需求:在项目里实现图标搜索功能,按照组+项目的格式输出

 组装成如下格式:

 

 egg后端的代码实现:

async projectSearchIcon(param) {
        let sql = 'SELECT * FROM `tbk_icon` WHERE';
        if (param.value !== '') {
            sql += ` name LIKE '%${param.value}%' or \`describe\` LIKE '%${param.value}%' `;
        }
        // 查询出来的所有icon数据
        const iconsList = await this.app.mysql.query(sql);
        console.log(typeof iconsList,'typeof iconsList')
        const iconsListObject = {};

        Array.prototype.forEach.call(iconsList, function (item) {

            if (!Array.isArray(iconsListObject[item.groupId])) {
                iconsListObject[item.groupId] = [];
            }
            iconsListObject[item.groupId].push(item);
            // console.log(iconsListObject[item.groupId],'iconsListObject[item.groupId]')
        });
        const results = [];
        // console.log(iconsListObject)
        for (const name in iconsListObject) {
            // console.log(iconsListObject)
            const projects = await this.app.mysql.select('tbk_group', {where: {id: name}});
            const dataItem = {
                ...projects[0],
                icons: iconsListObject[name],
            };
            // console.log(projects);
            // console.log(typeof projects);
            // console.log('projects');
            // console.log('\n');
            results.push(dataItem);
        }

        return {
            code: 200,
            sucess: true,
            data: results,
            msg: '编辑成功',
        };
    }

扩展:

egg中await是egg给sql封装成了异步,如果去掉await查询,查询结果是promise

 那node的sql是异步还是同步呢?

 控制台显示结果也是异步的!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值