[英]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.