如何验证MongoDB中是否已有电子邮件的NodeJS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何验证MongoDB中是否已有电子邮件的NodeJS相关的知识,希望对你有一定的参考价值。
我在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');
}
})
如果电子邮件已经存在于数据库中,如何验证错误消息?
答案
您可以使用指定的电子邮件在集合上调用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...
}
})()
以上是关于如何验证MongoDB中是否已有电子邮件的NodeJS的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Mongoose/Mongodb 与 node.js- 护照身份验证一起使用
如何使用 Rails 在 MongoDB 中验证跨模型的唯一性?
使用 mongoose(Node.js) 在 MongoDB 中搜索
如何创建一个使用 node 和 mongodb 发送邮件的 api
如何允许用户在 Node JS Passport JS 失败后尝试不同的电子邮件?
多个用户如何在 Node.js 中使用 Gmail 别名发送电子邮件,而无需 Google 开发人员控制台对每个用户进行用户身份验证?