EJS Express Nodejs 多页注册表 - 在 2 页上存储 JSON 的最佳方式



我在Express EJS中有一个2页的注册页面:

/signup1 - 用户名密码/注册2 - 名字姓氏

它们都有单独的表单字段,带有发布按钮,用于在我的网站上创建注册用户。

app.post("/signup1", function(req, res) {
const signupDetail1 = {
username: req.body.username,
password: req.body.password
};
res.render("signup2");
app.post("/signup2", function(req, res) {
const signupDetail2 = {
firstName: req.body.firstName,
lastName: req.body.lastName
//mongoose create registered user here with username password (from first page) and firstname //last name from second page
});

将请求变量从第一个登录页面传递到第二个登录页面进行发布的最佳或最简单的方法是什么?

提前感谢您的帮助!

嗨@dthanny,欢迎来到堆栈溢出:)

在这种情况下,我反对尝试将详细信息从第 1 页传递到第 2 页,相反,我建议您在每个步骤后将它们存储在服务器端。我建议这样做有几个原因:

  1. 对于要与第二个请求一起发送的信息,前端需要以某种方式保存数据。单页应用程序(使用 vue、react、angular 等(执行多步骤表单并且仅在收集所有信息后发送单个请求是很常见的。在您的情况下,您使用的是服务器端渲染,这意味着您需要前端以某种方式存储信息,这可能会变得非常混乱,如果您决定这样做,您可能会发现您打开了一些验证缺陷。
  2. 据推测,如果用户输入的数据违背了阶段 1 的验证,您需要要求他们在进入阶段 2 之前重新输入数据。既然您已经验证了数据,那么没有理由不将其永久存储。
  3. 存储数据并进入下一步比将数据再次发送回客户端并在最终请求时重新发送要简单得多。

似乎在每个步骤之后为您存储信息会简单得多,并且会大大减少您需要编写的代码量。

如果由于某种原因您无法执行此操作,那么我建议您使用一些前端javascript在发送之前收集所有信息,而不是使用服务器端来驱动步骤。如果您使用这种方法,那么数据将永远不会到达您的服务器(如果是敏感信息,这是一个好方法(。

最新更新