如何从nodeJS的查询块中获取变量?

时间:2018-12-20 18:07:41

标签: javascript sql node.js

我有此代码:

conn.query('SELECT COUNT(*) AS count FROM test', (err, rows) => {
let count = rows[0].count;
console.log(count);  }); 

我希望将值存储在全局变量中,而不是在控制台中记录计数值,以便能够在代码中的其他任何地方(查询块外部的任何地方)使用它。这怎么可能? 谢谢!

1 个答案:

答案 0 :(得分:0)

您确实有几种方法。您要问的是以下内容:

var result;
conn.query('SELECT COUNT(*) AS count FROM test', (err, rows) => {
  result = rows[0].count;
});  

这将满足您的要求,但问题是conn.query的代码是异步的,这意味着在外面,如果您想使用result,则不知道何时使用准备。

在这些情况下,您可能可以使用一些异步管理,例如promise,因为使用全局变量不是最佳实践:

function countTests() {
  return new Promise((resolve, reject) => {
    conn.query('SELECT COUNT(*) AS count FROM test', (err, rows) => {
      resolve(result);
    });  
  });
}
countTests().then(result => { console.log('results:', result); });

如果要像这样分配它,甚至可以用async/await来实现它:

const results = await countTests();

将此代码包装在async块中