Я использую глобальный массив с именем «пользователи» для хранения имени, пароля и города пользователя. Когда новый пользователь регистрируется, он берет имя и пароль пользователя и помещает его в массив '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>

В выводе моей консоли я получаю 'users' как:

  [ { 
name: 'lilly',
password:
 '$2b$10$NejINmFcHYLWaxe1xqb.BuojaWyVFQWeNC.FCHskrTMelNow1TS3G' },
{ city: 'xyz'} ]
1
crypto S. 18 Дек 2019 в 17:47

1 ответ

В node.js Class рассматривается как объект по умолчанию для любого фактического класса в вашей программе. Поэтому, когда токенайзер узла (вещь, которая помогает вашему коду быть воспринятым как машинный код) проходит и смотрит на Class с заглавной буквы c, он думает об этом как о том, что вы крайне странно пытаетесь определить класс. Я рекомендую переименовать эту переменную во что-то, что не будет так сильно конфликтовать. Даже простое использование имени может решить вашу проблему.

0
Shronk 18 Дек 2019 в 19:04
Я добавил вывод консоли для получения дополнительной информации, а также изменил «Класс» на «город», по-прежнему сталкиваясь с той же проблемой. @Shronk
 – 
crypto S.
18 Дек 2019 в 19:26
У пользователей похоже, что city является полностью отдельным членом массива, есть ли для этого причина?
 – 
Shronk
19 Дек 2019 в 18:17