使用express提交表单后,将文件和用户名一起呈现到url中



我有一个nodeJS应用程序,它从表单中获取用户信息,并使用mongoose保存到mongoDB数据库中。

example:
router.post('/', (req, res) => {
newUser.save()
}

我见过其他网站在提交表单后更新url,我猜这是用户的查询字符串,并添加到url的末尾。

Example: http://stackoverflow.com/profile/Jon%Doe

不确定在提交表单后如何使用用户信息更新url。我试图呈现一个文件:

router.req('/', (req, res) => {
res.render('profile' + username) //username is a variable of the user
}

但这只会查找带有用户名的url。我想我必须以某种方式用用户名更新ejs模板文件。

要在表单发布后更改URL,可以使用res.redirect()将浏览器重定向到新的URL。然后,浏览器将请求该新url,您需要有该新url的路由才能返回所需的页面内容。

router.post('/', (req, res) => {
// other code here to process form data
newUser.save(..., function(err) {
if (err) {
console.log(err);
res.sendStatus(500);
} else {
// build new URL here
res.redirect(newURL);
}
});
}

如果您想在重定向到的页面中显示用户名,您可以使用一个EJS模板,该模板中有一个用户名的位置,您可以从URL中的任何位置获取用户名,并将其提供给模板的res.render(),以便EJS将用户名插入正确的位置。

如果你正在进行某种登录,那么你可能想以不同的方式完成整个过程。您可能希望在服务器上创建一个用户会话对象(可能使用express-session(,并将用户名保留在其中,以便在任何时候您想要呈现页面时,都可以从服务器端会话对象获取用户名,而不是将其放在URL中。这可能更简单一些。

最新更新