我想询问检查用户是否已存在并在Mongo DB中抛出错误的最佳方法是什么。我尝试使用快速验证器,但我认为这不是正确的做法。
我一直在尝试使用此代码,除了自定义用户名部分外,一切都很好。我无法使这段代码正常工作,所以也许有更好的方法可以做到这一点,不一定更容易。
router.post('/register', function(req,res) {
const name = req.body.name;
const email = req.body.email;
const username = req.body.username;
const password = req.body.password;
const password2 = req.body.password2;
//Looking for errors
req.checkBody('name', 'Name is required').notEmpty();
req.checkBody('email', 'Email is required').notEmpty();
req.checkBody('email', 'Wrong email format').isEmail();
req.checkBody('username', 'Username is required').notEmpty();
req.checkBody('password', 'Password is required').notEmpty();
req.checkBody('password2', 'Passwords do not match').equals(password);
req.check('username').custom(value => {
return User.findOne({username: username}, function(err,result) {
if(err) throw err;
if(result) {
console.log(result.username);
return true;
}
});
});
答案 0 :(得分:0)
当然,您可以进行查询以检查用户名在数据库中是否唯一。
public static DateTime? Date { get; set; }
static void Main(string[] args)
{
Date = new DateTime(2017, 5, 5);
Console.WriteLine(Date.Value.Date);
Console.Read();
}
但 mongoose 架构让您可以创建一个独特的字段,因此您不必再担心它了。
SELECT student_id,
CASE admission_date > date_of_birth THEN
Timestampdiff(256, Char(Timestamp(admission_date)-Timestamp(date_of_birth)))
ELSE
Timestampdiff(256, Char(Timestamp(date_of_birth)-Timestamp(admission_date)))
AS Admission_DOB
FROM person
无需在该字段上进行自定义验证,只需在插入时抛出错误即可 请注意,它通常是在这种情况下定义为唯一的电子邮件字段。