我想在hapijs中设置flash错误信息。我提到了这两个问题:
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()
,这给了我相同的结果。
如何设置要在视图中显示的Flash /临时错误消息?
答案 0 :(得分:0)
yar.set()将设置读取时未删除的正常会话数据。您需要使用flash方法来存储和检索闪存。
flash(type,message,isOverride) - 存储易失性数据 - 读取后应删除的数据。如果没有参数,它将返回所有flash消息并删除原件。仅提供类型时,它将返回该类型的所有闪存消息并删除原件。当给定类型和消息时,它将该消息设置或附加到给定类型。 'isOverride'用于表示提供的消息应替换任何现有值而不是附加到它(默认为false)。
因此将闪存存储在处理程序中:
request.yar.flash('error', err['message']);
并在其他地方检索所有'错误'闪烁:
const allErrorMessages = request.yar.flash('error');