最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

使用多个循环的mysql在Node.js中进行查询

运维笔记admin8浏览0评论

使用多个循环的mysql在Node.js中进行查询

使用多个循环的mysql在Node.js中进行查询

我正在尝试通过for进行几个查询。 requestFast (i)函数尝试进行与列表大小一样多的更新。执行它时,错误显示为“调用quit后无法使查询入队”,但最后关闭了连接。

const database = new Database();

let person = [];

database.query(queryGet)
    .then(rows => {
        for (i in rows) {
            person[i] = new Person(rows[i].name, rows[i].lastName, rows[i].age);
        }
        for (i = 0; i < uuidUploads.length; i++) {
            request(i);
        }
        database.close();
    }).catch(error => console.log(error));

回答如下:

request(i)几乎肯定会返回一个承诺。发生的事情是您正在遍历request(i),但实际上并未执行“ request”功能,而是将其添加到事件循环中。因此,正在发生的事情是您当前的函数正在完成,包括database.close()命令,然后从事件循环中调用request(i)函数。

我建议重构您的代码以使用异步/等待模式,以使其更易于阅读和排除故障。

async function databaseQueryHandler() {
    const database = new Database();

    let person = [];


    let rows = await database.query(queryGet)
    try {
        for (let i in rows) { // make sure to declare your variables or you are going to have a bad time (add let)
            person[i] = new Person(rows[i].name, rows[i].lastName, rows[i].age);
        }
        for (let i = 0; i < uuidUploads.length; i++) { // not sure where uuidUploads comes from
            await request(i); // not sure you want to be passing in i here...
        }
        database.close();
    } catch (e) {
        console.log(e)
    }
}
发布评论

评论列表(0)

  1. 暂无评论