Mongodb更新,但旧信息呈现

Posted

技术标签:

【中文标题】Mongodb更新,但旧信息呈现【英文标题】:Mongo DB updated, but old info rendered 【发布时间】:2016-05-16 06:47:58 【问题描述】:

我不熟悉使用 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 首先添加到哪里? 我正在使用 passport.js 本地策略来注册用户。 糟糕,应该查看这个问题的标签。我的错! 【参考方案1】:

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

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

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

* 在实践中,您可能不想为每个请求都点击您的User 集合。理想情况下,您应该有一些会话中间件在用户会话期间缓存user 对象。在这种情况下,您需要在更新 mongo 中的文档后更新会话对用户的引用。

【讨论】:

以上是关于Mongodb更新,但旧信息呈现的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 连接

mongodb的基本操作数据更新

网络抓取新值后,Mongodb 集合未正确更新

MongoDB 更新对象并删除属性?

MongoDB 更新对象并删除属性?

将Mongodb中的日志呈现到烧瓶路径中