Mongo 数据库已更新,但呈现旧信息
Mongo DB updated, but old info rendered
我刚开始使用 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
,那么您将为您的下一个请求提供最新的用户*。
如果您只是 res.render
使用回调中返回的 user
对象,您会看到更新后的用户:
res.render('profile.ejs', { user: user });
* 实际上,您可能不想为每个请求都访问 User
集合。理想情况下,您有一些会话中间件可以在用户会话期间缓存 user
对象。在这种情况下,您需要在 mongo.
中更新文档后更新会话对用户的引用
我刚开始使用 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
,那么您将为您的下一个请求提供最新的用户*。
如果您只是 res.render
使用回调中返回的 user
对象,您会看到更新后的用户:
res.render('profile.ejs', { user: user });
* 实际上,您可能不想为每个请求都访问 User
集合。理想情况下,您有一些会话中间件可以在用户会话期间缓存 user
对象。在这种情况下,您需要在 mongo.