>source

양식을 등록하는 동안 문제가 발생했습니다. 모든 필드가 완성 된 상태에서 제출을 클릭하고 전자 메일 (이미 DB에 있음)이 재설정되고 두 번째로 오류 메시지 (이미 DB에있는 전자 메일 및 다른 메시지 ...)가 나타납니다. 무슨 문제입니까?


router.post('/register', function(req, res) {
  var name = req.body.name;
  var email = req.body.email;
  var username = req.body.username;
  var password = req.body.password;
  var password2 = req.body.password2;
  req.checkBody('username', 'Veuillez renseigner un identifiant').notEmpty();
  req.checkBody('email', 'Veuillez renseigner une adresse email valide').isEmail();
  req.checkBody('password', 'Veuillez renseigner un mot de passe').notEmpty();
  req.checkBody('password2', 'Les mots de passe ne correspondent pas').equals(req.body.password);
  var errors = req.validationErrors();
  if(errors) {
    res.render('register', {errors:errors});
  } else {
    User.findOne({ email: email }).then(user => {
      if (user) {
        req.flash('error_msg','EMAIL ALREADY IN DB');
        res.render('register', {errors:errors});
  } else {
    var newUser = new User({
      email: email,
      username: username,
      password: password
    });
      User.createUser(newUser, (err,user) => {
        if(err) throw err;
        console.log(user)
      })
      req.flash('success_msg','u can now log u account is created')
      res.redirect('/users/login') 
      }
    });
  }
});


도움을 주셔서 감사합니다 :)


  • 답변 # 1

    만들기 전에 createUser 콜백 함수가 응답하기를 기다리지 않는 것 같습니다 모든 것이 성공했는지 확인하십시오.

  • 답변 # 2

    GisliBG와 같이 CreateUser 콜백을 기다려야합니다. 즉, createUser가 작업을 완료 한 후 실행해야하는 코드를 콜백에 넣어야합니다. 이것은 비동기 코드와 관련한 일반적인 규칙/동작입니다.

    이것을 시도하십시오 :

    User.createUser(newUser, (err,user) => {
            if(err) throw err;
            console.log(user);
            req.flash('success_msg','u can now log u account is created');
            res.redirect('/users/login');
          })
    
    

  • 답변 # 3

    업데이트! 이처럼 작동하지만 비밀번호가 아닌 중복 이메일을 입력하면 이메일 오류 메시지 만 있습니다.이를 제외한 모든 작업

    이것은 나의 등록 파일입니다

    {{#if errors}}
      {{#each errors}}
        <div class="alert alert-danger">{{msg}}</div>
      {{/each}}
    {{/if}}
    {{#if error}}
      {{#each error}}
        <div class="alert alert-danger"></div>
      {{/each}}
    {{/if}}
    <h2 class="page-header">Register</h2><br>
    <form action="/users/register" method="post">
      <div class="form-group">
        <label for="username">Username</label>
        <input type="text" class="form-control" placeholder="Username" name="username">
        </label>
      </div>
      <div class="form-group">
        <label for="email">Email</label>
        <input type="text" class="form-control" placeholder="Email" name="email">
        </label>
      </div>
      <div class="form-group">
        <label for="password">Password</label>
        <input type="password" class="form-control" placeholder="Password" name="password">
        </label>
      </div>
      <div class="form-group">
        <label for="password2">Confirm Password</label>
        <input type="password" class="form-control" placeholder="Password" name="password2">
        </label>
      </div>
      <button class="btn btn-primary" type="submit">Submit</button>
    </form>
    
    

    내 users.js 파일 (전체가 아님)

    router.post('/register', function(req, res) {
      var name = req.body.name;
      var email = req.body.email;
      var username = req.body.username;
      var password = req.body.password;
      var password2 = req.body.password2;
      req.checkBody('username', 'Veuillez renseigner un identifiant').notEmpty();
      req.checkBody('email', 'Veuillez renseigner une adresse email valide').isEmail();
      req.checkBody('password', 'Veuillez renseigner un mot de passe').notEmpty();
      req.checkBody('password2', 'Les mots de passe ne correspondent pas').equals(req.body.password);
      var errors = req.validationErrors();
      var error = 'email not available'
      if(errors) {
        res.render('register', {errors: errors})
      } else {
        User.findOne({ email: email })
          .then(user => {
            if(user) {
              //USER EXIST
              res.render('register', {errors: errors, error: error})
            } else {
              var newUser = new User({
                email: email,
                username: username,
                password: password
            });
            User.createUser(newUser, (err,user) => {
              if(err) throw err;
              console.log(user);
              req.flash('success_msg','u can now log u account is created');
              res.redirect('/users/login');
            })
            }
          })
        }
      });
    
    

  • 이전 Java를 사용하여 Android로 쓰기 전에 Firebase 데이터베이스에서 이미 종료 된 데이터를 읽는 방법
  • 다음 python - 문자열 목록에서 숫자/숫자를 찾고 숫자/숫자가 0이 아닌 경우 1을 바꾸는 방법은 무엇입니까?