【问题标题】:res.redirect showing old information after form submission?res.redirect 在表单提交后显示旧信息?
【发布时间】:2019-02-01 03:19:09
【问题描述】:

我有一个 node.js 应用程序,我在其中创建了一个用户个人资料页面。我让它可编辑,这样他们就可以根据需要更新他们的名字。

但是,当我单击表单上的“保存更改”按钮时,它会重定向到正确的页面,但会显示旧信息。只有在您刷新页面或离开页面时,更新的信息才会显示。

提交表单html:

<form action="./profile" method="POST">
<div class="form-group">
    <label for="">Full Name</label>
    <input type="text" class="form-control" value="<%= name %>" 
name="name"> 
</div>
<div class="form-group" >
    <label for="">email</label>
    <input type="text" class="form-control" value="<%= email %>" readonly>
</div>
<div class="form-row">
    <div class="form-group">
        <button type="submit" class="btn btn-info"><a href="profileEditor"> 
</a> Save Changes</button>
    </div>
    <p>&nbsp; &nbsp;</p>
    <div class="form-group">
        <button class="btn btn-dismiss"><a href="./profile">Exit</a> 
</button></a>
    </div>
</div>

</form>

index.js 的一部分(在我的路由文件夹中)

const express = require('express');
const router = express.Router();
const { ensureAuthenticated } = require('../config/auth');
const mongoose = require('mongoose');
const User = require('../models/User');

router.post('/', ensureAuthenticated, (req, res) => {
   updateRecord(req,res);
   res.redirect('/profile');
});

function updateRecord(req, res) {
User.findOne({_id:req.user.id},(err,doc)=>{
 //this will give you the document what you want to update.. then 
doc.name = req.body.name;
doc.save(function(err,doc){
}); 
});   
}

module.exports = router;

在我的 router.post 函数下,res.redirect 工作并将用户发送到“/profile”,但不显示更新的数据库信息。请帮忙!

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    您可以直接使用 findOneAndUpdate() 函数来更新用户配置文件。尝试如下:

    const express = require('express');
    const router = express.Router();
    const { ensureAuthenticated } = require('../config/auth');
    const mongoose = require('mongoose');
    const User = require('../models/User');
    
    router.post('/', ensureAuthenticated, (req, res) => {
      User.findOneAndUpdate({_id:req.user.id},{name: req.body.name},{new: true},(err,doc)=>{
           console.log('#### Updated Record ####',doc);
           res.redirect('/profile');
      });   
    });
    
    
    
    module.exports = router;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多