Обновить страницу после res.redirect ( «назад») в маршруте

голоса
1

Я работаю над приложением, которое позволяет загружать изображения и создавать альбомы. Все прекрасно работает признать, что после того, как будет создан альбом новый альбом не отображается в клиенте, пока страница не перезагружается, и я не могу понять, как решить эту проблему.

Ниже маршрут для создания альбома. Является ли это как-то можно использовать что-то другое, чем res.redirect ( «назад») в этом случае, так что страница перезагружается после того, как маршрут закончен?

Конечно, я мог бы скопировать / вставить код из маршрута для загрузки страницы в первую очередь, но это было бы гораздо DRY. Может быть, я могу назвать другой маршрут внутри этого маршрута?

маршрут:

app.post('/album', function(req, res){

    var newAlbum = new albumModel.Album();

    newAlbum.imageName = req.body.albumPicsName;
    newAlbum.imageId = req.body.albumPicsId;
    newAlbum.title = req.body.albumTitle;

    newAlbum.save(function (err) {
        if (err) {
            console.log(err);
            // do something
            console.trace();
        }
        res.redirect('back');
    });
});
Задан 27/04/2012 в 13:11
источник пользователем
На других языках...                            


2 ответов

голоса
1

Вы должны быть в состоянии сделать res.redirect ( «/ альбом») вместо спины, чтобы заставить полную перезагрузку, но получить тот же тип обратной связи.

Ответил 28/04/2012 в 22:23
источник пользователем

голоса
4

«назад» является псевдонимом , req.get('Referrer')так что если «/ альбомы» Ваш реферер вы можете по- прежнему возникают проблемы с браузером , возвращающей 304 (HTTP не модифицируется) HTTP статус или браузер кэшированные страницы (общий). Если вы испытываете этот вопрос вы можете сделать несколько вещей:

Отправить некоторые очистки кэша заголовки:

res.header('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0');
res.redirect('back');

Или изменить URL:

 var url = require('url');
 var u = url.parse(req.get('Referrer'), true, false);
 u.query['v'] = +new Date(); // add versioning to bust cache 
 delete u.search;
 res.redirect(url.format(u));  

Конечно, если вы знаете URL, такие как «/ альбомы» вы не должны идти, хотя все, что rigamarole добавить немного версий - просто добавить текущую временную метку в строку URL.

Первый способ чище и лучше работает имо. Я видел случаи, когда страница не имеет реферера, хотя я явно пришел с другой страницы из-за кэширование.

Ответил 04/12/2013 в 23:45
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more