我正在使用名为'users'的全局数组来存储用户的名称,密码和城市。当新用户注册时,它将获取该用户的名称和密码,并将其推入数组“用户”。成功注册后,用户将被重定向到详细信息页面,在该页面中,用户再次输入城市并提交表单。再次将用户重定向到要显示用户名称和城市的新页面。我正在获取用户名,但城市未定义。
这是我的server.js代码:
var users = []
app.get('/',checkAuthenticated, (req, res)=>{
res.render("index.ejs",
{ name: req.user.name,
city: req.user.city
});
console.log(users);
})
app.post('/register', checkNotAuthenticated, async (req, res)=>{
try{
const hashedPassword =await bcrypt.hash(req.body.password, 10)
users.push({
name:req.body.name,
password:hashedPassword
})
res.redirect('/details')
} catch{
res.redirect('/register')
}
})
app.post('/details',checkAuthenticated, (req, res)=>{
try{
users.push({
city: req.body.city,
})
res.redirect('/')
} catch{
res.redirect('/details')
}
})
这是我的index.ejs代码:
<h1>Hi <%= name %></h1>
<h1>city: <%= city%></h1>
在我的控制台输出中,我得到的“用户”为:
[ {
name: 'lilly',
password:
'$2b$10$NejINmFcHYLWaxe1xqb.BuojaWyVFQWeNC.FCHskrTMelNow1TS3G' },
{ city: 'xyz'} ]
在node.js中,Class
被视为程序中任何实际class的默认对象。因此,当节点标记器(帮助您将代码视为机器代码的事物)通过并用大写字母c来查看Class
时,它会在您极其奇怪地尝试定义一个类时想到它。我建议将该变量重命名为不会造成太多冲突的变量。即使只是将名称改为小写也可以解决您的问题。