req.session 返回错误的值



app.js

const mongoose = require('mongoose');
const session = require('express-session');
const MongoDBStore = require('connect-mongodb-session')(session);

const MONGODB_URI =
'mongodb+srv://@cluster0-szxlh.mongodb.net/shop';

const store = new MongoDBStore({
uri: MONGODB_URI,
collection: 'sessions'
});

app.use(
session({
secret: 'my secret',
resave: false,
saveUninitialized: false,
store: store
})
);

app.use((req, res, next) => {
console.log("in app");
res.locals.isAuthenticated = req.session.isLoggedIn;
res.locals.isShopAuthenticated = req.session.isShopLoggedIn;
res.locals.isUserAuthenticated = req.session.isUserLoggedIn;
res.locals.islat=req.session.lat;
res.locals.islang=req.session.lang;
res.locals.csrfToken = req.csrfToken();
console.log(req.session.lat); //returns wrong(previous)value
console.log(req.session.lang); //returns wrong(previous)value
next();
});
app.use(function (req, res, next) {
res.set('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0');
next();
});

设置饼干的发布请求

exports.postHome=(req,res,next)=>{
const lattitude=req.body.lattitude;
const longitude= req.body.longitude;
req.session.lat=lattitude;  //setting session
req.session.lang=longitude; 
req.session.save();
console.log("inpost");
console.log(lattitude);
console.log(longitude);
res.redirect('/');
}

我在会话中间件之后使用了路由。 我已经在数据库中签入了值,但应用程序中的 req.session.lat .js有时会返回以前更新的值

原木

内邮 13.336614284510889 80.19245464019774 在应用程序中 13.336614284510889 80.19245464019774

内邮 13.334818684323631 80.18992263488768 在应用程序中 13.336614284510889(检查它有时返回以前的值( 80.19245464019774

exports.postHome=(req,res,next)=>{
const lattitude=req.body.lattitude;
const longitude= req.body.longitude;
req.session.lat=lattitude;  //setting session
req.session.lang=longitude; 
req.session.save(err=>{      
if(!err)
{
console.log("inpost");
console.log(lattitude);
console.log(longitude);
res.redirect('/');
}
})

}

如果 req.session.save 已同步,则其工作正常。

最新更新