我使用express.js
作为服务器端,使用普通JavaScript作为客户端。在注册路线中,我想仅在他/她尚未注册时才添加用户。如果已经注册,我希望收到一条提醒消息“用户已经注册了”#39;在注册路径中表单的提交按钮之间重定向到/users/add
路由。这是/users/add
路线......
app.post('/users/add', (req, res, next) => {
user = {
name: req.body.name,
studentID: req.body.studentID,
password: req.body.password
}
let count = 0;
Users.find({}).toArray((err, users) => {
if (err) {
return console.log(err);
}
for (let i = 0; i < users.length; i++) {
if (users[i].studentID == user.studentID)
count++;
}
// Add user if not already signed up
if (count == 0) {
Users.insert(user, (err, result) => {
if (err) {
return console.log(err);
}
console.log('User added...');
res.redirect('/');
});
} else {
// Alert message logic here
}
});
如何使用纯JavaScript实现这一目标? 感谢...
答案 0 :(得分:0)
只需将消息发送回客户端,例如&#34;用户存在&#34;。当客户收到它时,alert("The user already exists").
if(users.length){
res.status(409).send("user exists")
}
在你的前端,无论你使用什么框架:
if(response=="user exists") alert("The user already exists")
顺便说一下,你不需要count
变量。您只计算users.length
。直接使用users.length
。
此外,这段代码存在缺陷:
if (err) {
return console.log(err);
}
您在不回复客户端的情况下退出该功能,因此您的HTTP呼叫将永久挂起并导致超时。您必须始终回复客户:
if (err) {
console.log(err);
return res.status(500).send(err);
}