节点,检查db中用户的最佳方法

时间:2017-11-21 18:09:30

标签: javascript node.js mongodb express mongoose

我想询问检查用户是否已存在并在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;
                }
            });
        });

1 个答案:

答案 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

无需在该字段上进行自定义验证,只需在插入时抛出错误即可 请注意,它通常是在这种情况下定义为唯一的电子邮件字段。