node.js 中的 mySQL 查询返回未定义

Posted

技术标签:

【中文标题】node.js 中的 mySQL 查询返回未定义【英文标题】:mySQL query in node.js is returning undefined 【发布时间】:2021-08-25 00:33:07 【问题描述】:

进行 sql 查询时,我的函数返回未定义。我不确定如何解决这个问题,当我用谷歌搜索这个问题时我很困惑。这是我的代码的一部分:

function randomfact() 
let sql = 'SELECT id FROM facts ORDER BY RAND() LIMIT 1;';
let query = db.query(sql, (err, result) => 
    if (err) 
        throw err;
    
    else 
        return result;
    
);


const app = express();

app.get("/", function(req, res) 
   res.send(randomfact());
   console.log(randomfact());
);

我对这个问题的最佳猜测是我返回了一个不正确的数据类型,但我不确定如何解决它。

任何建议都是好建议,谢谢!

【问题讨论】:

【参考方案1】:

更改您的randomfact 函数以返回查询结果:

function randomfact() 
  let sql = 'SELECT id FROM facts ORDER BY RAND() LIMIT 1;';
  return new Promise((resolve, reject) => 
    db.query(sql, (err, result) => 
      if (err) 
        reject(err);
      
      else 
        resolve(result);
      
    );
  );

等待randomfact返回结果:

app.get("/", async function(req, res) 
   const result = await randomfact();
   res.send(result);
   console.log(randomfact());
);

【讨论】:

以上是关于node.js 中的 mySQL 查询返回未定义的主要内容,如果未能解决你的问题,请参考以下文章

node.js 中的未定义错误

Node.js 和 mysql 未定义函数

Node.js + Express POST 请求返回未定义

node.js:jsdom 的问题 - jQuery 对象返回未定义

Node.js, express, html form req.body 未定义

尝试发出时,带有 Node.js 的 Socket.io 在路由文件中返回未定义