设置&在hapijs中清除会话闪光

时间:2016-10-15 15:16:12

标签: node.js hapijs

我想在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 /临时错误消息?

1 个答案:

答案 0 :(得分:0)

yar.set()将设置读取时未删除的正常会话数据。您需要使用flash方法来存储和检索闪存。

  

flash(type,message,isOverride) - 存储易失性数据 - 读取后应删除的数据。如果没有参数,它将返回所有flash消息并删除原件。仅提供类型时,它将返回该类型的所有闪存消息并删除原件。当给定类型和消息时,它将该消息设置或附加到给定类型。 'isOverride'用于表示提供的消息应替换任何现有值而不是附加到它(默认为false)。

因此将闪存存储在处理程序中:

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

并在其他地方检索所有'错误'闪烁:

const allErrorMessages = request.yar.flash('error');