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中的文档后更新会话对用户的引用。
- 客户端的JavaScript代码replace
- 如何以编程方式login到使用Google身份validation的网站
- Facebook或Twitterauthentication与iPhone客户端和node.js服务器
- 如何让我的deserializeUserfunction在护照login后不断运行?
- 尝试为Google身份validation器插入二维码图片时出现400错误请求
- 使用Passport在Socket.io上进行令牌validation
- 如何使用Node.JS请求HTTP摘要authentication?
- Passport是否支持新的Google+loginfunction?
- 具有“持久性标记”function的Node.js身份validation库