【问题标题】:How to store value from an sql query to a variable in node js?如何将sql查询中的值存储到节点js中的变量?
【发布时间】:2019-12-01 01:10:45
【问题描述】:

我第一次使用 mysql 和 nodejs,我希望通过异步函数在我的网页中输入 sql 查询的结果。我能够得到正确的结果,但无法将其存储在变量中,然后将其用作输入值。

I've tried using this but this doesn't provide a viable solution。我也尝试返回值。是否建议在异步函数外部或内部处理查询?

(async function Ahmedabad() {  
      let i = 'select RegNumber from Details ORDER BY RegNumber DESC LIMIT 1;';
  await  con.query(i, [true], (error, results, fields) => {
    if (error) {
      return console.error(error.message);
    }
    let x = results[0].RegNumber;
    console.log(x);      // <------- Shows correct value
  });
  console.log(x);        // <------- Says x is not defined
})()

我想将值存储到一个变量中,然后进一步使用它。

【问题讨论】:

  • "我尝试过使用它,但这并不能提供可行的解决方案。" 您能否详细说明为什么您的问题几乎完全一样'不提供“可行的解决方案”?
  • 因为这个问题只有一个答案,而且也没有用。
  • 您能否详细说明“不起作用”的说法?它确实指出了代码应该返回一个Promise 对象以进行相应处理的事实。
  • 在提供的答案中处理承诺的方式可能存在一些错误,我不断收到“无法读取未定义的属性'then'”。

标签: mysql node.js asynchronous


【解决方案1】:

您已在回调范围内定义了x,因此无法从回调中访问它。 试试这个:

(async function Ahmedabad() {  
      let i = 'select RegNumber from Details ORDER BY RegNumber DESC LIMIT 1;';
  let x;
  await  con.query(i, [true], (error, results, fields) => {
    if (error) {
      return console.error(error.message);
    }
    x = results[0].RegNumber;
    console.log(x);      // <------- Shows correct value
  });
  console.log(x);        // <------- Says x is not defined
})()

但老实说,您应该考虑代码的整个设计))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多