我刚开始使用 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 });
});
});
最佳答案
您没有提供有关如何设置 req.user
的任何信息,但如果您点击 User
集合来填充每个请求的 req.user
,那么您将拥有用于下一个请求的最新用户*。
如果您只是使用回调中返回的 user
对象进行 res.render
操作,您将看到更新后的用户:
res.render('profile.ejs', { user: user });
<小时/>
* 实际上,您可能不希望每个请求都访问您的 User
集合。理想情况下,您应该有一些 session 中间件,可以在用户 session 期间缓存 user
对象。在这种情况下,您需要在更新 mongo 中的文档后更新 session 对用户的引用。
关于node.js - Mongodb 已更新,但呈现旧信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35238602/