Node.js 在db回调上重新生成会话

Node.js 在db回调上重新生成会话,node.js,mongodb,express,Node.js,Mongodb,Express,我正在尝试在成功验证用户凭据时重新生成会话。但是,当代码在db回调中时,不会重新生成会话 app.post('/login',function(req,res){ var userName=req.body.userid.toLowerCase(); db.collection('credentials').findOne({'userName':userName},function(err,result){ req.session.regenerate(function (err)

我正在尝试在成功验证用户凭据时重新生成会话。但是,当代码在db回调中时,不会重新生成会话

app.post('/login',function(req,res){

var userName=req.body.userid.toLowerCase();
db.collection('credentials').findOne({'userName':userName},function(err,result){
    req.session.regenerate(function (err) { 

    });
});
})

它在外面很好用

app.post('/login',function(req,res){
var userName=req.body.userid.toLowerCase();
req.session.regenerate(function (err) { 

    });
db.collection('credentials').findOne({'userName':userName},function(err,result){

});
})


有什么想法吗?

看起来是我的错。代码在我发布的代码正下方响应请求。由于这些都是异步工作的,我猜响应是在会话重置后发送的

app.post('/login',function(req,res){

var userName=req.body.userid.toLowerCase();
db.collection('credentials').findOne({'userName':userName},function(err,result){
    req.session.regenerate(function (err) { 

    });
    res.send('welcome '+result.firstName+' '+result.lastName);
});
})


我在regenarte呼叫中移动了响应,现在它正在工作

您可以使用async模块并实现瀑布函数,了解发生这种情况的原因。我做错了什么吗?你犯了什么错误?没有错误。我甚至在REGENATE回调中记录了该值。但是会话未重新生成会话cookie未更改,会话存储中未存储其他parmater。