javascript - 在另一个文件中访问 MySQL 的输出

标签 javascript mysql node.js express

我想从包含查询的函数访问变量“结果”。 当我想从另一个文件访问它时,我试图在 POST 请求后处理输出,该变量被声明为“未定义”。

这是我执行查询的文件:

const db = require('../db/connect'); 

module.exports = {

getID(name){
db.query(`SELECT CWID FROM user WHERE surname = '${name}'`, function(error, result, fields){
   if(error) console.log(error); 
   console.log(result);
       }); 
    }
}

这是我想要处理数据的文件:

router.post('/test', function(req, res){
  const data = queries.getID(req.body.name); 
  console.log(data);
  res.render('new test', {title: "test"}); 
})

有人可以帮我解决这个问题吗?

最佳答案

下面是使用 mysql 和 async/await 进行查询的示例。这应该做你想做的事:

查询文件

const db = require('./db/connect');

module.exports = {
    getID(name) {
        return new Promise((resolve, reject) => {
            db.query(`SELECT CWID FROM user WHERE surname = '${name}'`, function(error, result, fields) {
                if (error) {
                    reject(error);
                } else {
                    resolve(result);
                }
            });
        });
    }
}

主文件

router.post('/test', async function(req, res){
    const data = await queries.getID(req.body.name); 
    console.log("Query result: ", data);
    res.render('new test', {title: "test"}); 
});

您的结果在初始示例中未定义的原因是您正在使用异步 I/O(在 Node.js 中正常)。通过从 getID 返回 Promise,我们可以进行异步。轻松调用并使用一些漂亮的代码语法。

关于javascript - 在另一个文件中访问 MySQL 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57199194/

相关文章:

MySQL:显示复合索引中使用了多少列

javascript - 如何生成包含非零元素索引的张量?

node.js - 对运行一个非常简单的 socket.io 示例感到困惑?

javascript - 使用 javascript 在弹出窗口中填充父窗口中的值

javascript - 使javascript引用变量成为值变量?

javascript - 将 Google 转换代码添加到 WordPress Contact Form 7

javascript - 在网站中重复背景

java - 准备好的陈述有问题

javascript - 如何找出YouTube上关注者的确切人数?

mysql - 如何在sql中使用like运算符匹配完全数