我在如何从NodeJS向MySQL服务器发送几个SQL更新查询方面有些挣扎。我需要某种同步执行。
情况:
这或多或少是关于如何使用NodeJS解决这种情况的一个普遍问题。据我了解,MySQL查询是异步执行的。
如何才能实现遍历数组以构建条目列表,这些条目需要更新才能在MySQL表中创建? 有任何“同步” MySQL查询吗?
致谢
詹斯
答案 0 :(得分:0)
切换到异步/等待MySQL客户端可能会真正受益。您正在使用的客户端可能已经对此提供支持。
但是,即使您没有,也无法切换,编写一个将基于回调的mysql转换为基于promise的mysql的帮助函数仍然是最简单的。
有效的方法是:
for(const formValue of formValues) {
await mysql.query('....');
}
在没有异步/等待和回调的情况下执行此操作要困难得多。
我想一种方法可能是这样的:
function doQueriesForFormValue(formValues, cb) {
const queries = [];
for(const formvalue of formValues) {
queries.push('...');
}
runQueries(queries, cb);
}
function runQueries(queries, cb) {
// Grab the first query
const currentQuery = queries[0];
mysql.query(currentQuery, (res, err) {
if (err) {
cb(null, err);
}
if (currentQueries.length>1) {
// Do the next query
runQueries(currentQueries.slice(1), cb);
} else {
// call final callback
cb(true);
}
});
}
我用一些有效的模式编写了an article,以便在Node.js中使用MySQL。也许有帮助