簡體   English   中英

nodeJS mysql庫如何順序執行查詢

[英]nodeJS mysql library how to serially execute query

例如,如果我有如下代碼,它將以串行還是並行方式執行?

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庫模擬該環境?

我不能使用Promise或callbacks,因為我不知道查詢將執行多少次或何時執行。 每次從客戶端到服務器進行查詢時,我只能調用connection.query

您可以利用javascript promise解決您的問題。 您可以檢查https://github.com/tuhinpaul/syp-model/wiki/Programmatic- (動態)-Chaining-and-Recursive-Functions-with-JavaScript-or-Node.js-Promises以了解如何順序執行任務。

syp-model軟件包提供了按順序執行查詢的功能,盡管此時文檔需要做更多工作。 並且它還沒有集成的交易支持。

有幫助嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM