Res.redirect 与 Restify 中的异步路由不兼容?

问题描述 投票:0回答:1

我的 Restify 路线是异步的:

 server.get("/verify", async (req, res) => { }

在此类路线中,我必须将用户的点击从电子邮件重定向到某些确认成功 html,并完成此路线上的旅程并执行 res.send

 res.redirect(
    {
     hostname: process.env.HOST,
       pathname: process.env.REDIRECT_PATH_VERIFY_SUCCESS,
      port: 80,
      secure: process.env.REDIRECT_SECURE,
     permanent: true,
    },
    next
  );
  res.send(200);
 return

这不起作用。 Node.js 抛出“ReferenceError:next 未定义”并且浏览器发誓“无法完成链”。

已检查其他建议的解决方案(req、res、next),这是不行的。异步工作起来轻而易举。

采用同步方式,删除所有代码只是为了测试重定向是否有效,结果确实如此。

但这是一个死胡同,因为 Mongoose 不会再通过回调运行 - 出于所有充分的理由:

“Model.findOne() 不再接受回调”

确实尝试过,确实从我的代码中创建了“回调地狱”,尽管它都是正确的并且可以工作。

如果您有任何解决办法,请告诉我。

亲切的问候, 尤里

node.js restify
1个回答
0
投票

由于此路由用于电子邮件确认以捕获来自电子邮件的点击并吐出一些 html 作为回报,因此解决方法是根本不使用 res.redirect。

相反,我们通过以下方式输出 html:

  const html = "<html> EMAIL CONFIRMATION SUCCESSFUL! </html>";

      res.writeHeader(200, { "Content-Type": "text/html" });
      res.write(html);
      res.end();
© www.soinside.com 2019 - 2024. All rights reserved.