将数据存储在MySQL块中

时间:2018-08-16 01:59:42

标签: mysql node.js

 function liveFeed_update() { 
   var symbol_in_table = "SELECT count (*) as total FROM livedata 
     wherescript_name = '"+s_symbol_script+"'";
   con.query(symbol_in_table, function (err, result) {
     if (err) {
       throw err;
     }
     else {
       num_row = + result[0].total;
       console.log("Number of Rows in inner level:",+ num_row);
     }
   });
   console.log("Number of Rows in outer level:",+ num_row);
 }

Node.js首先执行外部控制台日志,然后再进入内部。结果是我没有得到正确的结果。

但是我想先执行sql查询,然后根据结果执行下一步。

1 个答案:

答案 0 :(得分:0)

请记住,Node.js是 asynchronous ,这意味着代码将无法正常运行,这与您用于同步(阻塞)代码的期望相反。

如果您需要递增num_row并可靠地返回,则必须将其与以下之一链接在一起:回调,尾随then或使用async / {{1 }}。

我鼓励您使用诺言:

await

对回调函数也可以做到这一点,但随后变得棘手,通常取决于async库。

如果您可以使用function liveFeed_update() { var symbol_in_table = "..."; var num_row = 0; con.query(symbol_in_table).then(function(results) { results.forEach(function(result) { num_row = + result[0].total; console.log("Number of Rows in inner level:", num_row); }); }).then(function() { console.log("Number of Rows in outer level:",+ num_row); }); } / async的本机Node.js功能,它甚至会更加简单,从而使您的异步代码更像传统的同步代码:

await