对不起,如果这听起来很傻,我还在学习服务器端 Javascript。我的 app.js 文件中有这段代码。
var test;
UserModel.findOne({name: 'guest'}, function(err, user) {
test = user.name;
});
console.log(test);
我知道这不起作用,因为UserModel.findOne
它是异步的,所以一切都必须在回调中发生。例如console.log(test)
可以在完成之前执行UserModel.findOne
。
问题
如果我var test
在 app.js 文件中声明,有没有办法将user.name
(via UserModel.findOne
) 的值放入其中?
我这样做的原因是因为我希望提前从数据库中检索所有这些信息。这样我就不必每次需要用户名时都进行数据库查询。
如果这个想法不合理,是否有类似的替代方案?
编辑/更新
这不用于身份验证/登录。我打算让所有用户都可以访问该变量test
及其内容。
本质上,我在问为什么变量没有test
永久设置为user.name
,而是只在回调范围内执行。而且,是否可以永久设置变量?