Javascript 如何在cookie过期时删除数据库文档
我试图实现的是,当cookie过期时,它会使用mongoose删除收集订单中的文档,我已经为cookie设置了过期时间 并尝试在app.use中使用if语句,但不起作用,例如if(req.session.cookie._expires==new Date()){并尝试将新日期设置为变量,但仍不成功Javascript 如何在cookie过期时删除数据库文档,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我试图实现的是,当cookie过期时,它会使用mongoose删除收集订单中的文档,我已经为cookie设置了过期时间 并尝试在app.use中使用if语句,但不起作用,例如if(req.session.cookie._expires==new Date()){并尝试将新日期设置为变量,但仍不成功 app.use(session({ secret: "Our little secret.", resave: false, saveUnitialized: true,
app.use(session({
secret: "Our little secret.",
resave: false,
saveUnitialized: true,
cookie: { maxAge : 36000 }
}));
app.use(function(req, res, next) {
const session = req.session.cookie;
const day = new Date();
if (session && new Date(session._expires) === new Date()) {
Order.deleteMany({}, function(req, res) {
console.log("Order deleted");
});
}
next();
});
提前感谢。对象正在按链接进行比较。您使用不同的链接创建了两个不同的对象。此处的“始终为false”:
新日期(会话到期)==新日期()
时间戳的比较应该有效:
+新日期(会话到期)尝试比较日期
试试这个:
if (session && moment(session._expires)startOf('day') === moment().startOf('day')) {
Order.deleteMany({}, function(req, res) {
console.log("Order deleted");
});
}
app.use(函数(请求、恢复、下一步){
var session=req.session.cookie | |“”;
如果(新日期(会话到期)<新日期()){
Order.deleteMany({},函数(req,res){
控制台日志(“订单已删除”);
});
log('用户会话已过期');
req.session.cookie.expires=新日期(Date.now()+36000)
}
控制台日志(请求会话);
next();
});
什么包括会话
和会话.\u过期
?结果是什么:控制台.log(会话&&+新日期(会话.\u过期)当我控制台记录它时,返回FALSE谢谢您的帮助,但我发现了,您可以检查答案。首先为cookie声明一个变量,检查是否没有cookie,然后与日期进行比较,如果它已经过期,则重置,当然,如果您需要重置。
app.use(function(req, res, next) {
var session = req.session.cookie || '';
if (new Date(session._expires) < new Date()) {
Order.deleteMany({}, function(req, res) {
console.log("Order deleted");
});
console.log('User session has expired.');
req.session.cookie.expires = new Date(Date.now() + 36000)
}
console.log(req.session);
next();
});