节点.js MYSQL,在前一个查询完成后按顺序运行每个查询
Node.js MYSQL to run each Queries sequencially after previous one is done?
我正在使用来自Node的Javascript MYSQL库.js然后我有多个查询要循环运行。但是当我运行循环时,the loop
总是突然到达结束(完成),而它启动的查询仍在处理中。那么如何保持循环以等待每个查询完成,然后正常继续呢?
我的代码是:
function startHere() {
console.log("-- START --");
for (i=1; i < 6; i++) {
dbInsert(i);
}
console.log("-- END --");
}
function dbInsert(id) {
connection.query (
'INSERT INTO table SET data=?',
[id],
function selectCb(err, results, fields) {
if (err) {
console.log(err.message);
}
if (results.length > 0) {
console.log(id+" RECORDS ADDED!");
}
}
);
}
startHere();
当我运行它时,它总是返回如下:
-- START --
-- END --
1 RECORDS ADDED!
2 RECORDS ADDED!
3 RECORDS ADDED!
4 RECORDS ADDED!
5 RECORDS ADDED!
这意味着,循环不会等待它启动的查询结束。
如何检测查询的端点并使其正常工作?
您的 selectCb 方法未被同步调用,因此您的循环有效地触发了每个调用,然后返回。
您可以检查文档中是否有该 connection.query 方法的同步版本,或者您需要创建一个回调以在所有插入触发后打印结束消息。
async
应该适合你
async.series([
function(){ ... },
function(){ ... }
]);
请参阅 https://github.com/caolan/async#series
相关文章:
- Xpath运行缓慢的查询
- Mongodb数千个并行运行的查询
- 对couchdb数据库/视图中的所有文档运行脚本/查询
- 添加行并运行多个mySQL查询
- 从 JavaScript 对本地 SQLite 文件运行查询
- ajax发布数据并点击运行php-sql查询
- 一旦设置了PHP查询字符串,如何运行jQuery脚本
- Node.JS在没有停止Node.JS脚本的情况下再次运行NodeMsql查询
- 在node.js和express中基于路径运行不同数据库查询的更好方法
- 如何将用户从jquery移动窗体键入的查询SQL发布到WCF服务,并在WCF服务上运行该查询
- 如何使用 JavaScript 运行 MySQL 查询
- 如何在运行时在 ngResource 查询方法中设置超时
- 运行查询并从外部站点检索 XML
- 如何使用 jsp 变量在 javascript 中运行 oracle 查询
- Javascript 媒体查询,用于运行不同的脚本,具体取决于视口大小
- j查询在本地运行网站时未在 MAMP (1.11.2) 中加载
- 节点.js MYSQL,在前一个查询完成后按顺序运行每个查询
- 为什么 js 和 html 代码没有运行搜索查询
- 如何将javascript变量传递给php文件,运行数据库查询并返回true或false
- j查询冲突问题 - 停止运行脚本