Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何验证电子邮件是否已在MongoDB | Nodejs中_Node.js_Mongodb_Passport.js_Body Parser - Fatal编程技术网

Node.js 如何验证电子邮件是否已在MongoDB | Nodejs中

Node.js 如何验证电子邮件是否已在MongoDB | Nodejs中,node.js,mongodb,passport.js,body-parser,Node.js,Mongodb,Passport.js,Body Parser,我在nodejs中创建了一个loginapp,但我想验证电子邮件(或用户名)是否已经存在于数据库中 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.bo

我在nodejs中创建了一个loginapp,但我想验证电子邮件(或用户名)是否已经存在于数据库中

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');
  }
})
如果电子邮件已在数据库中,如何验证错误消息的原因?

您可以使用指定的电子邮件调用集合。如果没有匹配的文档,则解析为
null
。您可以使用它来检测数据库中是否已经存在具有相同电子邮件的用户

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');
  }
})
您没有提供代码的相关部分来猜测数据库的体系结构,但您可能会使用以下内容:

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...
  }

})()
(节点:4716)未经处理的PromisejectionWarning:TypeError[错误\无效\参数\类型]:“url”参数的类型必须为string。接收到的类型undefinedIt应该可以工作。检查是否连接到数据库。