Node.js-检查用户是否存在
我使用NodeJS和passport让用户在看到刚刚参加的测验结果之前创建一个帐户。我的挑战是,我需要在页面刷新之前确认用户名是否可用,因为如果发生这种情况,用户将丢失其结果 再次声明:我需要在刷新之前验证用户名是否未被使用 我想我很接近,但它不起作用。如何更改代码以应对此挑战 当前,如果使用用户名,则在尝试创建帐户时会返回一个错误,并且用户会出现在/failpage上,如下所示Node.js-检查用户是否存在,node.js,mongodb,express,authentication,passport.js,Node.js,Mongodb,Express,Authentication,Passport.js,我使用NodeJS和passport让用户在看到刚刚参加的测验结果之前创建一个帐户。我的挑战是,我需要在页面刷新之前确认用户名是否可用,因为如果发生这种情况,用户将丢失其结果 再次声明:我需要在刷新之前验证用户名是否未被使用 我想我很接近,但它不起作用。如何更改代码以应对此挑战 当前,如果使用用户名,则在尝试创建帐户时会返回一个错误,并且用户会出现在/failpage上,如下所示 app.post('/quiz', usernameToLowerCase, emailToLowerCase, f
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.get('/quick')
,如果用户存在或不存在,则返回布尔值on。部分User.findOne
可以通过该路径发送。当他松开表单用户名字段的焦点时,您只需使用ajax发出请求,并显示一个通知,说明该名称是否可用。要解决您的问题,我认为您需要路由。至少有一个app.get('/quick')
,如果用户存在或不存在,则返回布尔值on。部分User.findOne
可以通过该路径发送。当他松开表单用户名字段的焦点时,您只需使用ajax发出请求,并显示一条通知,说明该名称是否可用。如果有其他人尝试执行相同的操作,则可以使用此方法解决此问题:
在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中
如果其他人也在尝试做同样的事情,就用这个来解决它: 在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中
你需要打回电话谢谢@SLaks。在user.save回调?中,请设置适当的代码格式,使其可读。如果您能让我们更容易地阅读/理解您的代码,您就更有可能获得帮助。另外,当数据库中已经存在该名称时,您希望发生什么?您希望发送什么类型的响应。您无法在服务器上执行
alert()
。我想在屏幕上通知用户,让他们在不刷新页面的情况下重试。您需要在CallbackThank@SLaks中运行。在user.save回调?中,请设置适当的代码格式,使其可读。如果您能让我们更容易地阅读/理解您的代码,您就更有可能获得帮助。另外,当数据库中已经存在该名称时,您希望发生什么?您希望发送什么类型的响应。您无法在服务器上执行alert()
。我想在屏幕上通知用户,让他们在不刷新页面的情况下重试。感谢您的帮助!你能给我举个例子吗?还有,我该如何到达“获取”路线?我要做表格吗?谢谢你的帮助!你能给我举个例子吗?还有,我该如何到达“获取”路线?我做表格吗?