Node.js 等待mongoose获取用户数据以注入本地数据
我正在制作一个web应用程序,希望用户在其中进行身份验证。 我创建了一个全局变量(app.locals),它指示用户是否经过身份验证Node.js 等待mongoose获取用户数据以注入本地数据,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我正在制作一个web应用程序,希望用户在其中进行身份验证。 我创建了一个全局变量(app.locals),它指示用户是否经过身份验证 app.use('/', function (req, res, next) { app.locals.logedIn = req.session.user_id !== undefined; next(); }); 到目前为止一切正常。 当我尝试为经过身份验证的用户注入用户对象时,问题就开始了: app.use('/', function (r
app.use('/', function (req, res, next)
{
app.locals.logedIn = req.session.user_id !== undefined;
next();
});
到目前为止一切正常。
当我尝试为经过身份验证的用户注入用户对象时,问题就开始了:
app.use('/', function (req, res, next)
{
app.locals.logedIn = req.session.user_id !== undefined;
if (app.locals.logedIn)
{
mongoose.model('users').findById(req.session.user_id).exec(function (err, user)
{
app.locals.user = user;
});
}
else
{
app.locals.user = null;
}
next();
});
每当我尝试远程访问用户全局变量(例如在模板中)时,它都会失败并说用户变量为null
我想之所以会这样,是因为我不等待用户对象被注入到局部变量中
有没有办法等待mongoose查询完成
mongoose.model('users').findById(req.session.user_id).exec(function (err, user)
{
app.locals.user = user;
}).wait();
^^比如说像那样
或者我应该改变我的方法
问题是,我需要一个可以从模板访问的用户对象,以便呈现有关用户的信息
谢谢,,
Arik您需要将
next()
位放入exec
回调中
app.use('/', function (req, res, next)
{
app.locals.logedIn = req.session.user_id !== undefined;
if (app.locals.logedIn)
{
mongoose.model('users').findById(req.session.user_id).exec(function (err, user)
{
app.locals.user = user;
next();
});
}
else
{
app.locals.user = null;
next();
}
});
别担心。也不要忘记捕捉错误<代码>下一步(错误)代码>