req - это переменная функции / publi c переменная, которую я предполагаю. connection.query является асинхронным. Обратные вызовы всегда асинхронны, и каждый REST API имеет вид.
Асинхронный в основном позволяет функциям обратного вызова функций выполняться вместе со следующими строками кода.
Причина, по которой req не возвращает никакого значения это потому, что значение req сначала выводится на печать, прежде чем оно фактически присваивается в функции. Если вы хотите добавить все в req, выполните команду:
someFunctionYouHaveCreated: (req,res,type) => {
connection.query('SELECT * FROM users WHERE username = ? OR email = ? AND password = ?', [login, login, password], function (err, results) {
if (results.length > 0) {
req.session.username = results[0].username;
req.session.email = results[0].email;
req.session.password = results[0].password;
req.session.premium = results[0].premium;
req.session.created_at = results[0].created_at;
} else {
console.log("Error!");
}
DoSomething(req);
});
}
DoSomething: (req) => {
//Do something
}
Или создайте обещание и запустите функцию на основе обещания. Используйте promise.all для присвоения значения: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all, но я не думаю, что вам нужен такой уровень сложности.