在hapijs中设置和清除会话闪烁



我想在hapijs中设置flash错误消息。我提到了这两个问题:

如何在Hapi JS中设置Flash消息?
Hapijs自定义500错误页

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/临时错误信息显示在视图中?

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

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

将flash存储在处理程序中:

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

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

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

最新更新