需求:在项目里实现图标搜索功能,按照组+项目的格式输出
组装成如下格式:
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是异步还是同步呢?
控制台显示结果也是异步的!!