nodeJS mysql库如何串行执行查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodeJS mysql库如何串行执行查询相关的知识,希望对你有一定的参考价值。

比方说,如果我有类似下面的代码,它会串行还是平行执行?

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

let transaction = 'START TRANSACTION; //DO SOMETHING COMMIT;'

connection.query(transaction, function (error, results, fields) {
  if (error) throw error;
  console.log(results);
});

connection.query(transaction, function (error, results, fields) {
  if (error) throw error;
  console.log(results);
});

connection.end();

它确实说

MySQL协议是顺序的,这意味着您需要多个连接来并行执行查询。您可以使用池来管理连接,一种简单的方法是为每个传入的http请求创建一个连接。

在网站上但我想知道'顺序'是否意味着查询按顺序发送到数据库但是“并行”执行或者是否意味着在第一个查询完全执行之前是否永远不会发送下一个查询(这就是我的意思串行)。

如果它们在数据库中并行“执行”,我如何确保每个查询都作为单独的transaction提供?我问,因为我必须处理多个查询(可能同时请求服务器)在数据库中串行执行。当然这可以在多个连接下(多个连接到具有不同终端实例的mysql服务器)但是如何使用这个mysql nodejs库来模拟该环境?

我不能使用promises或回调,因为我不知道查询的执行次数或时间。每次从客户端到服务器进行查询时,我都只能调用connection.query

答案

您可以利用javascript承诺来解决您的问题。您可以检查https://github.com/tuhinpaul/syp-model/wiki/Programmatic-(Dynamic)-Chaining-and-Recursive-Functions-with-JavaScript-or-Node.js-Promises以了解如何串行执行任务。

syp-model包提供了顺序执行查询的能力,尽管此时文档需要更多工作;它还没有集成的事务支持。

有用吗?

以上是关于nodeJS mysql库如何串行执行查询的主要内容,如果未能解决你的问题,请参考以下文章

如何使用nodejs sequelize执行此SQL查询?

NodeJS MySQL如何在查询函数之外获取结果

如何使用 sinon 和 Mocha 模拟对 mysql 查询 nodeJS 的 Promisify 调用?

NodeJs GraphQL 片段解析器

具有多个查询的NodeJS mysql连接池

你如何在 python 中处理 graphql 查询和片段?