2016-10-15 1 views
0

Я хочу настроить сообщение об ошибке флэш-памяти в hapijs. Я передал эти два вопроса:Установка и очистка сессии flash в hapijs

How to set Flash Messages in Hapi JS?
Hapijs Custom 500 Error Page

Здесь представлен onPreResponse:

server.ext("onPreResponse", (request, reply) => { 
    let response = request.response; 
    if (response.variety === "view") { 
    if (!response.source.context) { 
     response.source.context = {}; 
    } 
    let flashError = request["yar"].get("error"); 
    if (flashError) { 
     response.source.context["err"] = flashError; 
    } 
    } 

Тогда в обработчике, я установил с помощью request["yar"].set("error", err["message"]);

но переменная сеанса (err) никогда не очищается. Я попробовал request["yar".get("error", true), а также request["yar"].set("error",""). Это приводит к тому, что представления отображают ту же самую ошибку, что и пользователь, проходящий через экраны.

Я также пробовал с request["yar"].flash(), что дало мне те же результаты.

Как установить флэш/временные сообщения об ошибках для отображения в представлениях?

+0

Как вы установив «подстраховаться» печенье? Можете ли вы показать свою функцию обработчика? Также какая версия «hapi» и «yar»? – arb

ответ

0

yar.set() установит обычные данные сеанса, которые не будут удалены при чтении. Для хранения и извлечения вспышек вам необходимо использовать метод flash.

flash (type, message, isOverride) - сохраняет изменчивые данные - данные, которые следует удалить после чтения. При отсутствии аргументов он возвращает все флэш-сообщения и удаляет оригиналы. Если задан только тип, он вернет все флэш-сообщения этого типа и удалит оригиналы. При задании типа и сообщения он будет устанавливать или добавлять это сообщение к данному типу. 'isOverride' используется для указания того, что предоставленное сообщение должно заменить любое существующее значение, а не быть добавленным к нему (по умолчанию - false).

Так храните вспышку в обработчике:

request.yar.flash('error', err['message']); 

и получить все мигает «ошибка» где-нибудь еще:

const allErrorMessages = request.yar.flash('error'); 
Смежные вопросы