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中的文档后更新会话对用户的引用。
- 如何使用Node.js和Passport进行身份validation后,使用自己的ID将用户redirect到主页?
- 在NodeJS的TCP服务器上实现简单的身份validation
- 我们如何在node.js中使用Firebase Auth创build用户?
- 使用现有密码哈希和盐创buildHMAC
- LocalStrategy和ClientPasswordStrategy之间的护照区别
- 麻烦authentication
- 在处理POST请求时确定谁在Node上使用basicAuth进行了身份validation
- 一个好的npm模块散列和腌制用户login/ passwd?
- 在基本Http Auth Express.js之后redirect