Ответ 1
Вы можете использовать connect-flash промежуточное программное обеспечение, чтобы добавить функциональность req.flash() обратно в express 3.0.
- EDIT -
Я написал несколько middlware для этого: https://npmjs.org/package/flashify
Итак, начиная с выпуска Express 3.0, изменения удалили req.flash()
https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x (источник)
Итак, вот мой вопрос сейчас. Они рекомендовали использовать req.session.messages в локальном режиме для отображения флэш-памяти.
Итак, чтобы сделать сеанс доступным для представления, мы должны сделать следующее:
nb: В кофе script
app.locals.use (req,res) ->
res.locals.session = req.session
Как мы можем получить доступ к данным сеанса из представления, а затем очистить его? Мы не можем очистить содержимое сеанса после визуализации представления, но мы не можем его очистить, потому что он не достигнет представления, поэтому я немного потерял, как можно обойти эту проблему?
Вы можете использовать connect-flash промежуточное программное обеспечение, чтобы добавить функциональность req.flash() обратно в express 3.0.
Я считаю, что они просто переместили req.flash в req.session.messages
От ссылки Tim выше:
Это промежуточное программное обеспечение было извлечено из Express 2.x, после того как Express 3.x удалил прямую поддержку флеш-памяти. connect-flash возвращает эту функциональность обратно в Express 3.x, а также любую другую среду или приложение, совместимое со средним программным обеспечением. +1 для радикального повторного использования.
Express 2.x перейти на 3.x страница говорит следующее:
req.flash()
(просто используйте сеансы: req.session.messages = ['foo']
или аналогичные)Помимо connect-flash
и express-flash
, там также просто flash
, который производится командой expressjs (которую я считаю бонусом). Супер прост в использовании:
npm i flash
app.use(session()); // session middleware
app.use(require('flash')());
app.use(function (req, res) {
// flash a message
req.flash('info', 'hello!');
next();
})
while message = flash.shift() // consume messages as jade reads them
a.alert(class='alert-' + message.type)
p= message.message
Обратите внимание, как приведенный выше код смещает их; если вы только что прочитали массив, флеш-сообщения продолжают свисать там в сеансе (что отлично подходит для перенаправления).
Установите промежуточное программное обеспечение connect-flash, требуйте его, затем
app.use(flash())
и обратите внимание, что он должен появляться перед app.use(express.session...)