Javascript 函数返回“未定义”

Javascript 函数返回“未定义”,javascript,Javascript,当我等待结果时,我的函数返回未定义。什么是问题 getUserDictionary = (user_id) => { connection.connection.query("SELECT eng_word, ru_word FROM `dictionary` where user_id="+user_id, function (error, results, fields) { if (error) throw error; console.log(resu

当我等待结果时,我的函数返回未定义。什么是问题

getUserDictionary = (user_id) => {
  connection.connection.query("SELECT eng_word, ru_word FROM `dictionary` where user_id="+user_id,
   function (error, results, fields) {
    if (error) throw error;
      console.log(results);
      return results;
    });
}

console.log(getUserDictionary(1));
结果显示了我想要的,数据库连接没有问题。 但最后一个console.log with函数返回未定义的

您将面临SQL注入攻击 不要这样做:从user\u id=+user\u id的字典中选择eng\u word和ru\u word

如果这只是一个宠物项目,好吧,但是如果你把它开放给互联网,任何人都可以删除你的数据库。使用事先准备好的语句。如果您正在使用,您可以将其作为当前查询的替代:

connection.query('SELECT eng_word, ru_word FROM dictionary WHERE user_id = ?', [user_id], function (error, results, fields) {
无论如何。。。 您的问题是connection.connection.query是一个异步函数。如果希望它能够同步运行,可以使用ES6中支持的异步/等待模式。否则,您可以构造代码以响应查询返回

下面是使用async/await时的情况:

你可以像这样使用它

async () => {
  let results = await getUserDictionary(0);
  console.log(results);
}

等待需要位于异步函数内,以防止出现workSQL注入漏洞。令人惊讶的是,还没有人提到这件事。
async () => {
  let results = await getUserDictionary(0);
  console.log(results);
}