根据服务器的响应从客户端发送警报

时间:2018-01-11 13:52:27

标签: javascript jquery node.js express

我使用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实现这一目标? 感谢...

1 个答案:

答案 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);
}