Бесконечный цикл поиска, когда данные не существуют в запросе пожарного депо - PullRequest
0 голосов
/ 19 мая 2019

Я реализую элемент управления входом, используя Node.js (экспресс) + firestore.Я пытался использовать поисковый запрос для проверки id и пароля (pw).

Если введенные пользователем данные (из HTML <form>) находятся в БД пожарного хранилища, страница клиента будет перенаправлена ​​на /main.else перенаправит обратно.

Работает, когда данные находятся в БД пожарного хранилища, но не работает с бесконечным циклом и нет redirect, когда данные не находятся в БД пожарного хранилища.

Я проверил данные (id, pw) и проверено.Но это всегда делает бесконечный цикл, когда данные не находятся в базе данных Firestore.

Просмотр кода выглядит следующим образом.

    <form action="" method="post">
      <input placeholder="ID" name="id" id="id" type="text">
      <input placeholder="PASSWORD" name="pw" id="password" type="password">
      <button type="submit">SIGN-IN</button>
    </form>
    <button onclick="location.href='/signup'">SIGN-UP</button>

И код на сервере выглядит так

var users_info = db.collection('users')
    .where('id', '==', req.body.id).where('pw', '==', sha256(req.body.pw))
    .get().then(snapshot => {
      snapshot.forEach(doc => {
        if (doc.exists) {
          req.session.user = {
            'id': doc.data().id,
            'name': doc.data().name,
            'auth': doc.data().auth,
            'is_guest': doc.data().is_guest
          }
          res.redirect('/main');
        } else {
          res.redirect('back');
        }
      });
    })
    .catch(err => {
      console.log(err);
      res.redirect('back');
    });

1 Ответ

0 голосов
/ 20 мая 2019

Я нашел решение самостоятельно, используя snapshot.empty.

var users_info = db.collection('users')
    .where('id', '==', req.body.id).where('pw', '==', sha256(req.body.pw))
    .get().then(snapshot => {
      if(snapshot.empty) {
        res.redirect('/');
      }
      else{
        snapshot.forEach(doc => {
          if (doc.exists) {
            req.session.user = {
              'id': doc.data().id,
              'name': doc.data().name,
              'auth': doc.data().auth,
              'is_guest': doc.data().is_guest
            }
            res.redirect('/main');
          } else {
            res.redirect('/');
          }
        });
      }

    })
    .catch(err => {
      console.log(err);
      res.redirect('/');
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...