[英]Return a variable from sql query in Node.js
我在Node.js中有MySQL查詢,在其中我試圖返回“變量”並分配給getVarible我的查詢之外。 在這種情況下可以這樣做嗎? 如果是這樣,怎么辦?
這是我的代碼:
var sqlQuery = connection.query(result, function(err, rows, fields) {
var count = rows.length;
if(count === 1){
var variable = rows[0].item;
return variable;
}
}
});
var getVariable = variable;
如果在查詢調用之前聲明getVariable,則在返回查詢后,應該可以在cacllback功能內訪問它。 您可以嘗試如下操作:
var getVariable = {};
var sqlQuery = connection.query(result, function(err, rows, fields) {
var count = rows.length;
if(count === 1){
getVariable = rows[0].item;
}
}
});
但是請記住,查詢執行是異步的,因此在執行回調之前,變量將為空。
因此,我建議您使用所有在回調中執行該變量或使用apromise異步框架的邏輯。
您的connection.query
不會返回您認為返回的結果,即return variable;
聲明無效。
使用查詢對象的用法檢出API。
var query = connection.query('SELECT * FROM posts');
query
.on('error', function(err) {
// Handle error, an 'end' event will be emitted after this as well
})
.on('fields', function(fields) {
// the field packets for the rows to follow
})
.on('result', function(row) {
// Pausing the connnection is useful if your processing involves I/O
connection.pause();
processRow(row, function() {
connection.resume();
});
})
.on('end', function() {
// all rows have been received
});
或者,您可以使用第二個參數connection.query
來幫助您成功處理錯誤。 這是一個具有簽名function (error, results, fields)
的函數,其功能與上述API相同。
connection.query(sqlQueryStr, function (error, results, fields) {})
對connection.query
的調用是異步的,僅在結果可用(即查詢已執行)之后才執行作為第二個參數傳遞的函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.