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

我是新的使用MEAN堆栈,并试图实现用户服务。 我希望用户能够编辑他们的显示名称等信息。

用下面的代码,我可以在Mongo数据库中看到正在进行的更改,但是当我loggingreq.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 }); }); }); 

你没有包含关于如何设置req.user任何信息,但是如果你打你的User集合来为每个请求填充req.user ,那么你将拥有最新的用户为你的下一个请求* 。

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

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

*在实践中,您可能不希望为每个请求打你的User集合。 理想情况下,您将拥有一些会话中间件,用于在用户会话期间cachinguser对象。 在这种情况下,您需要在更新mongo中的文档后更新会话对用户的引用。