Как проверить, что электронная почта уже есть в MongoDB |Nodejs - PullRequest
0 голосов
/ 03 февраля 2019

Я создаю loginapp в nodejs, но я хочу проверить, есть ли электронная почта (или имя пользователя) в базе данных.

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', 'Please enter a username').notEmpty();
  req.checkBody('email', 'pls enter a email adress').notEmpty().isEmail();
  req.checkBody('password', 'pls enter a password').notEmpty();
  req.checkBody('password2', 'the password dont match').equals(req.body.password);

var errors = req.validationErrors();

  if(errors) {
          res.render('register',{
        errors:errors,
    })
    } else {
        var newUser = new User({
            email:email,
            username: username,
            password: password
        });
     User.createUser(newUser, function(err, user){
      if(err) throw err;
      console.log(user);
    });

    req.flash('success_msg', 'u create an accoun, u can log');

    res.redirect('/users/login');
  }
})

Как можно проверить, почему сообщение об ошибке появляется, если электронная почтауже в базе?

1 Ответ

0 голосов
/ 03 февраля 2019

Вы можете позвонить findOne по коллекции с указанным адресом электронной почты.Он разрешается до null, если не найдено ни одного документа.Вы можете использовать это, чтобы определить, есть ли уже пользователь с таким же адресом электронной почты в базе данных.

Вы не предоставили соответствующую часть кода, чтобы угадать архитектуру вашей базы данных, новы, вероятно, собираетесь использовать что-то вроде следующего:

const { MongoClient } = require('mongodb');
const email = 'john@doe.com';

// wraps everything in an async function
(async () => {

  // connect to database
  const client = new MongoClient('mongodb://localhost:27017');
  await client.connect();
  const users = client.db('your-db-name').collection('users');

  // look for an existing user
  let possibleDuplicate = await users.findOne({email});
  if (possibleDuplicate===null) {
    // email is not taken
    // do something...
  } else {
    // email is taken
    // do something...
  }

})()
...