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

mySQL query in node.js is returning undefined

进行 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());
});

我对该问题的最佳猜测是我返回的数据类型不正确,但我不确定如何修复它。

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

将您的 randomfact 函数更改为 return 查询结果:

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到return结果:

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