如何获取数据到ejs文件?

时间:2019-12-18 14:47:42

标签: node.js ejs

我正在使用名为“用户”的全局数组来存储用户的名称,密码和城市。当新用户注册时,它将获取该用户的名称和密码,并将其推入数组“用户”。成功注册后,用户将被重定向到详细信息页面,在该页面中,用户再次输入城市并提交表单。再次将用户重定向到要显示用户名称和城市的新页面。我正在获取用户名,但城市未定义。

这是我的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'} ]

1 个答案:

答案 0 :(得分:0)

在node.js中,Class被视为程序中任何实际 class 的默认对象。因此,当节点标记器(使您的代码被视为机器代码的东西)通过并用大写字母c来查看Class时,它会在您极其奇怪地尝试定义一个类时想到它。我建议将该变量重命名为不会造成太多冲突的变量。即使只是将名称改为小写也可以解决您的问题。