Подтвердить что ты не робот

Express 3.0 req.flash?

- 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

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

4b9b3361

Ответ 1

Вы можете использовать connect-flash промежуточное программное обеспечение, чтобы добавить функциональность req.flash() обратно в express 3.0.

Ответ 2

Я считаю, что они просто переместили req.flash в req.session.messages

Ответ 3

От ссылки Tim выше:

Это промежуточное программное обеспечение было извлечено из Express 2.x, после того как Express 3.x удалил прямую поддержку флеш-памяти. connect-flash возвращает эту функциональность обратно в Express 3.x, а также любую другую среду или приложение, совместимое со средним программным обеспечением. +1 для радикального повторного использования.

Express 2.x перейти на 3.x страница говорит следующее:

  • req.flash() (просто используйте сеансы: req.session.messages = ['foo'] или аналогичные)

Ответ 4

Помимо connect-flash и express-flash, там также просто flash, который производится командой expressjs (которую я считаю бонусом). Супер прост в использовании:

установить:

npm i flash

app.js:

app.use(session()); // session middleware
app.use(require('flash')());

app.use(function (req, res) {
  // flash a message
  req.flash('info', 'hello!');
  next();
})

view.jade:

while message = flash.shift() // consume messages as jade reads them
  a.alert(class='alert-' + message.type)
    p= message.message

Обратите внимание, как приведенный выше код смещает их; если вы только что прочитали массив, флеш-сообщения продолжают свисать там в сеансе (что отлично подходит для перенаправления).

Ответ 5

Установите промежуточное программное обеспечение connect-flash, требуйте его, затем

app.use(flash()) и обратите внимание, что он должен появляться перед app.use(express.session...)