gpt4 book ai didi

mysql - 使用带有多个循环的 mysql 在 Node.js 中查询

转载 作者:行者123 更新时间:2023-11-30 21:27:26 25 4
gpt4 key购买 nike

我正在尝试通过 for. requestFast (i) 函数尝试进行与列表大小一样多的更新。执行时出现“Cannot enqueue Query after invoking 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) 几乎肯定会返回一个 promise。发生的事情是你正在循环请求(i)但实际上没有执行“请求”函数而是将它添加到事件循环中。所以正在发生的事情是您当前的函数正在完成,包括 database.close() 命令,然后正在从事件循环中调用 request(i) 函数。

我建议重构您的代码以使用 async/await 范例,使其更易于阅读和故障排除。

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)
}
}

关于mysql - 使用带有多个循环的 mysql 在 Node.js 中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58204705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com