我对nodejs还是个新手,而且还在掌握它的诀窍。 我希望下面的代码将一个用户从数据库传递回一个变量。 当我获取一些数据时,连接和查询可以正常工作,但似乎无法将其存储在全局变量中。
在本例中,变量'test_user'可以工作(就像它在函数中一样),但是变量'test'不能工作。
我假设我需要将async和await放在某个地方,但我不知道放在哪里。
let test;
app.get('/testing', (req, res) => {
res.send("testing area");
test = getUserByEmail("w@w", function(result) {
let test_user;
if(result.length > 0)
{
test_user = result[0];
console.log(test_user); //logs the result ok
} else {
test_user = null;
}
return test_user;
});
console.log(test); //doesn't log the result
});
function getUserByEmail(email, callback) {
const SELECT_QUERY = "SELECT * FROM users WHERE email='"+ email +"'";
connection.query(SELECT_QUERY, (err, results) => {
if(err) {
console.error(err);
} else {
return callback(results);
}
});
}
您使用的是const
,这意味着您不能使用=
更改该变量的值。 您必须改用let
。
在get路由中使用async/await:
app.get('/testing', async (req, res) => {
test = await getUserByEmail("w@w", function(result) {