gpt4 book ai didi

javascript - 使用 mongoose 保存文档时如何设置 session cookie

转载 作者:行者123 更新时间:2023-12-03 08:05:02 24 4
gpt4 key购买 nike

注意:下面的代码使用名为 client-sessions by Mozilla 的模块

我有一个用于注册用户的表单,并且在提交表单时,会将 POST 发送到 app.post("/register) (在下面的代码中)。如果我然后转到主页路线这是 / 我可以看到输出用户信息的 console.log(user)

这就是我想要的。

但是,

当我注册为新用户时我希望重置 session ,当我第二次进入主页路由时我希望看到新用户信息输出到控制台 -但我不这么认为。相反,我看到了第一个用户的信息。我想知道为什么 session 没有被重置并替换为新的用户信息和/或我在这里不理解的内容。

谢谢。

app.use(session({
cookieName: 'session',
secret: "whatever",
duration: 30 * 60 * 1000,
activeDuration: 5 * 60 * 1000,
}))






app.get("/", function(req, res) {
if (req.session.user === undefined) {
res.render("index");
} else {
User.findOne(req.session.user.email, function(err, user) {

console.log(user); //__________________This ALWAYS outputs the first user registered even if new users register

})
res.render("index");
}
})


app.get("/register", function(req, res) {
res.render("register");
})





//_______________________________________________BEGIN registration


app.post("/register", function(req, res) {
req.session.reset();
var user = new User({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: req.body.email,
subscribed: false

}).save(function(err) {
req.session.user = user;
res.redirect("/");
})
})

//_______________________________________________END registration

回答

这个问题的答案有两个。首先是下面接受的答案。

将 session 存储在 save 方法中也是没有意义的。更正后的代码如下

app.post("/register", function(req, res) {

var user = new User({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: req.body.password,
subscribed: false

})

req.session.user = user; // This needed to be outside the save method

user.save(function(err) {

res.redirect("/");
})
})

最佳答案

这不是 session 的问题,而是数据库查询的问题。

而不是

User.findOne(req.session.user.email, function(err, user) {

应该是

User.findOne({email: req.session.user.email}, function(err, user) {

否则,查询始终返回用户集合中的第一个文档。

关于javascript - 使用 mongoose 保存文档时如何设置 session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34417935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com