【问题标题】:How 2 use Async Await on multiple queries and query under .map() function in NodeJS and MySQL2 如何在 NodeJS 和 MySQL 中的 .map() 函数下对多个查询和查询使用 Async Await
【发布时间】:2021-11-20 18:42:01
【问题描述】:

2 如何在 NodeJS 和 MySQL 的 .map() 函数下对多个查询使用 Async Await 和查询

注意:: 首先,我们将使用 Async 和 await 执行第一个查询,然后从第一个查询中获取 5 个 Id,而不是使用第一个查询数组,我们将使用 .map() 函数并一个一个地传递 Id使用 async 和 await 进入内部查询,并为每个循环创建对象并将这些对象保存到数组中。

请给我一些此功能的代码。

【问题讨论】:

    标签: mysql node.js async-await array.prototype.map


    【解决方案1】:

    这是您描述中的伪代码,它演示了如何等待多个异步操作完成:

    async function getRecords() {
      const recordIds = await execQuery() // get ids from db
    
      const promises = [];
    
      recordIds.map((e) => {
        promises.push(execQuery())
      });
    
      await Promise.all(promises);
    }
    

    根据您的描述,不清楚为什么需要单独的查询来检索对象。你不能在以下查询中使用(in operator)[https://www.w3schools.com/mysql/mysql_in.asp]:

    SELECT * FROM table WHERE id IN(1, 4, 8)

    【讨论】:

    • 用户每天保存数据 3 次(中午 12 点、下午 3 点、下午 6 点)。因此,如果我们通过 IN 条件获取数据而不是一个数组中的所有用户数据。因此,在反应结束时在 中显示数据存在一些问题。假设用户在下午 3 点添加数据并跳过下午 12 点的数据,而不是下午 3 点的数据显示在下午 12 点 ` userlist.map((userdata, index) => tasklist.map((taskdata, indextask) => if (props.tasklist .time_seconds >= 41400000 && props.tasklist.time_seconds {nl2br(props.tasklist.tasklist)} td> ) }else { return ( "" ) } ) ) `
    • 建议您在前端处理列表。此类查询很复杂,并且会降低可扩展性。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签