【问题标题】:Setting & clearing session flash in hapijs在 hapijs 中设置和清除会话闪存
【发布时间】:2016-10-18 10:52:06
【问题描述】:

我想在 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(),得到了相同的结果。

如何设置在视图中显示的闪现/临时错误消息?

【问题讨论】:

  • 如何设置“错误”cookie?你能展示你的处理函数吗?还有什么版本的“hapi”和“yar”?

标签: node.js hapijs


【解决方案1】:

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

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

所以将闪存存储在您的处理程序中:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 2022-08-09
    • 2015-09-27
    • 2012-04-26
    • 2017-06-09
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多