首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数返回"undefined“

函数返回"undefined“
EN

Stack Overflow用户
提问于 2019-08-08 08:52:22
回答 1查看 77关注 0票数 0

当我等待"result“时,我的函数返回"undefined”。什么是问题?

代码语言: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(results);
      return results;
    });
}

console.log(getUserDictionary(1));

"results“显示了我想要的(数据库连接没有问题)。但带有函数的最后一个console.log返回未定义

EN

回答 1

Stack Overflow用户

发布于 2019-08-08 09:04:17

您使自己很容易受到SQL注入攻击

不要这样做:"SELECT eng_word, ru_word FROM dictionary where user_id="+user_id

如果这只是一个宠物项目,很好,但如果你将它开放给互联网,任何人都可以删除你的数据库。请改用预准备语句。如果您使用的是mysqljs,您可以将以下内容作为当前查询的替代:

代码语言:javascript
复制
connection.query('SELECT eng_word, ru_word FROM dictionary WHERE user_id = ?', [user_id], function (error, results, fields) {

不管怎样..。

您的问题是connection.connection.query()是一个异步函数。如果您希望它同步运行,您可以使用ES6中支持的async/await模式。否则,您可以构造代码以响应来自query()的返回。

下面是使用async/await时的样子

代码语言:javascript
复制
getUserDictionary = (user_id) => {
  return new Promise((resolve, reject) => {
    connection.connection.query("blah blah blah",
      function (error, results, fields) {
        if (error) {
          reject(error);
          return;
        }
        console.log(results);
        resolve(results);
      });
  });
};

你可以像这样使用它

代码语言:javascript
复制
async () => {
  let results = await getUserDictionary(0);
  console.log(results);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57403898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档