Перейти к содержанию

Flash-сообщения

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

Для использования в Node.js flash-сообщений необходимо установить npm модули connect-flash, cookie-parser и express-session.

npm install connect-flash cookie-parser express-session --save

Модуль connect-flash представляет собой функцию промежуточной обработки и работает только совместно с модулем express-session.

Пример использования Node.js flash-сообщений.

app.js

const express = require('express'),
  app = express(),
  cookieParser = require('cookie-parser'),
  session = require('express-session'),
  flash = require('connect-flash')

const host = '127.0.0.1'
const port = 7000

app.use(cookieParser('secret key'))
app.use(session({ cookie: { maxAge: 3600 * 24 } }))
app.use(flash())

app.get('/get-flash', (req, res) => {
  console.log('Flash: ', req.flash('message'))
  res.send('Get Flash')
})

app.get('/set-flash', (req, res) => {
  req.flash('message', { from: 'Me', to: 'You' })
  req.flash('warning', 'Important!')
  res.send('Set Flash')
})

app.listen(port, host, () => console.log(`Server listens http://${host}:${port}`))

Управление сообщениями осуществляется с помощью метода flash() объекта запроса. Для создания сообщения методу необходимо передать два параметра:

  • ключ, по которому в дальнейшем будет получаться сообщение;
  • текст сообщения.
req.flash('message', { from: 'Me', to: 'You' })

Получение заданного на предыдущем маршруте flash-сообщения также осуществляется через метод req.flash(), которому передается ключ, по которому задавалось сообщение.

console.log('Flash: ', req.flash('message'))

Node.js flash-сообщение удаляется только после того, как оно было использовано в шаблоне. В противном случае оно будет доступно на всех последующих маршрутах, пока не будет отображено.