res.redirect, показывающий старую информацию после отправки формы? - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть приложение 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', но не показывает обновленную информацию базы данных.Пожалуйста, помогите!

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете напрямую использовать функцию 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...