Node.js - 检查用户是否存在

标签 node.js mongodb express authentication passport.js

我使用 NodeJS 和 Passport 让用户先创建一个帐户,然后才能看到他们刚刚参加的测验的结果。我的挑战是我需要在页面刷新之前确认用户名可用,因为如果发生这种情况,用户将丢失其结果。

再次:我需要验证刷新之前没有使用用户名。

我想我已经很接近了,但它不起作用。我将如何更改我的代码来应对这一挑战?

目前,如果用户名被占用,则会在尝试创建帐户时返回错误,并且用户最终会出现在/fail 页面上,如下所示。

app.post('/quiz', usernameToLowerCase, emailToLowerCase, function(req, res) {


    User.findOne({
        username: req.body.username
    }, function(err, user) {
        if (err) {
            alert(err)
            if (user) {
                alert('this username is already taken. Please choose another.')
                console.log('there was a user');
                return false;

            }
        }
    });

    var user = new User({
        username: req.body.username,
        email: req.body.email,
        password: req.body.password,
    })



    user.save(function(err) {
        console.log('this is the problem' + ' ' + err)
        if (err) {
            return res.redirect('/failpage')
        }


        req.logIn(user, function(err) {
            if (err) {
                console.log(err);
            }
            console.log('all looks good')
            res.redirect('/results');
        });
    });
});

最佳答案

如果其他人尝试做同样的事情,可以用这个解决:

在 app.js 中

app.get('/usercheck', function(req, res) {
    User.findOne({username: req.query.username}, function(err, user){
        if(err) {
          console.log(err);
        }
        var message;
        if(user) {
          console.log(user)
            message = "user exists";
            console.log(message)
        } else {
            message= "user doesn't exist";
            console.log(message)
        }
        res.json({message: message});
    });
});

在js中

 $('#usercheck').on('change', function() {
    $.get('/usercheck?username='+$('#usernameValue').val().toLowerCase(), function(response) {  
    $('#usernameResponseHidden').text(response.message)
    if ($('#usernameResponseHidden').html() === "user exists"){
        $('#usernameResponse').text('That username is taken. Please pick another')
    }

关于Node.js - 检查用户是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44687044/

相关文章:

node.js - Express & connect-busboy 忽略某些请求

javascript - 为什么我尝试将 SQL 查询中的行获取到脚本中的全局变量中却只得到一个空数组?

mysql - Knex.js 可以防止 sql 注入(inject)吗?

node.js - 如何使用sailsjs v0.10连接mongodb?

mongodb - $literal 在 Golang-mgo 中的用法

python - 如何加速 PyMongo 查询/循环

node.js - 错误: unsatisfiable constraints: nodejs-npm (missing)

javascript - AngularJS json 数据未显示在文本区域上

node.js - Kraken JS 中间件和异常

node.js - Nodejs : Express + RedisStore, req.session 未定义