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