gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 15:44:41 25 4
gpt4 key购买 nike

我想从包含查询的函数访问变量“结果”。当我想从另一个文件访问它时,我试图在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com