簡體   English   中英

從Node.js中的SQL查詢返回變量

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

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