Mongo DB已更新,但旧信息已呈现

时间:2016-02-06 07:37:25

标签: node.js mongodb authentication mongoose passport.js

我是使用MEAN堆栈的新手,我正在尝试实现用户服务。我希望用户能够编辑其显示名称等信息。

使用以下代码,我可以在Mongo数据库中看到正在进行更改,但是当我记录req.user时,我看到它显示的是非更新版本,因此更新未呈现

请帮忙!

var router = require('express').Router();
router.route('/users/:user_id/changeName')
    // Update user's display name
    .post(function(req, res) {
        User.findByIdAndUpdate(req.params.user_id, { $set: { name: req.body.newName }}, function(err, user) {
            console.log(req.user);
            console.log(req.body.newName);
            res.render('profile.ejs', { user: req.user });
        });
    });

1 个答案:

答案 0 :(得分:2)

您没有提供有关req.user如何设置的任何信息,但如果您要点击User集合为每个请求填充req.user,那么您将拥有下一个请求的最新用户*。

如果你只是res.render使用回调中返回的user对象,你会看到更新后的用户:

res.render('profile.ejs', { user: user });

*在实践中,您可能不希望针对每个请求点击User集合。理想情况下,您将拥有一些会话中间件,可以在用户会话期间缓存user对象。在这种情况下,您需要在使用mongo更新文档后更新会话对用户的引用。