Я хочу получить доступ к переменной «результат» из функции, содержащей запрос. Когда я хочу получить к нему доступ из другого файла, в котором я пытаюсь работать с выводом после запроса 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.info(error);
console.info(result);
});
}
}
И это файл, в котором я хочу работать с данными:
router.post('/test', function(req, res){
const data = queries.getID(req.body.name);
console.info(data);
res.render('new test', {title: "test"});
})
Может ли кто-нибудь помочь мне с этим?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вот пример запроса с использованием 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.info("Query result: ", data);
res.render('new test', {title: "test"});
});
Причина, по которой ваш результат не определен в исходном примере, заключается в том, что вы используете асинхронный ввод-вывод (обычный в Node.js). Возвращая промис из getID, мы можем сделать async. вызывает легко и с некоторым хорошим синтаксисом кода.