【问题标题】:How to store a mysql value into a variable so I can use it later on node.js?如何将 mysql 值存储到变量中,以便稍后在 node.js 上使用它?
【发布时间】:2021-09-19 00:06:16
【问题描述】:

嗨,

我有一个这样的mysql查询:

con.query("SELECT name FROM members WHERE id=1", function(err, rows, fields) {
   console.log(rows); 
});

这样做的问题是它迫使我将几乎所有的代码都放在这个函数中,以便从我想要的行中获取值。没有其他更简单的方法吗?就像将值存储到一个变量中,这样我以后可以根据需要多次使用它?像这样:

var name = con.query("SELECT name FROM members WHERE id=1");

some function() {
  var value = name;
  return stuff;
}
console.log(name); 

还是这样?

谢谢。

【问题讨论】:

  • Javascript 是异步的,这意味着总是有回调函数。或者从 ES6 开始,我们有 promise,然后我们可以通过使用 async / await 来减少回调。阅读js文档。
  • 您愿意详细说明吗?
  • 不,抱歉。我不知道您是否是回答我其他问题的同一个 David,但我们已经承认不可能在函数之外声明变量。

标签: mysql node.js global-variables


【解决方案1】:

一个选项应该是这样的:

let nameVar = ""

connection.query("SELECT name FROM members WHERE id=1", function(err, rows, fields){
  if(err) {
    throw err;
  } else {
    setName(rows);
  }
});

function setName(value) {
  nameVar = value;
  console.log(nameVar);
}

【讨论】:

  • 我认为这将是一回事。它要求我将所有内容都放在一个函数中,在这种情况下 setname() isnt?
  • @CainNuke 我是怎么看到的然后在不发送另一个查询的情况下被延迟调用。虽然我可能误会了!
  • 好的,但是比如说我需要在一个名为 emitmsg(); 的函数中的变量。你会怎么做?
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。
  • @CainNuke '变量是指查询的名称吗?为什么你很难在另一个函数中访问它?它将超出功能范围并且可以访问。
【解决方案2】:

您需要的是一个从 SQL 查询返回响应的函数。一种方法是创建一个 Promise 并使用 async/await 来获取响应。

例子:

getName(){
    const promise = new Promise((resolve, reject) => {
        conn.query("SELECT name FROM members WHERE id=1", (err, res, fields) => {
            if (err) reject(err);

            resolve(res);
        });
    });
}

func() async {

    try{
        const data = await getName();
        console.log(data);
    } catch(e) {
        console.log(e);
    }
}

【讨论】:

  • 哇,这一切只是为了从数据库中获取一个值?这是最简单的方法吗?
  • 我刚刚检查过它并没有工作。我得到意外的令牌异步
  • 可能是因为 node.js 的旧版本。尝试将其更新到最新版本。
  • 我有node最新版本:v10.24.1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
相关资源
最近更新 更多