因此,我目前正在学习nodejs,并且节点中的工作流程存在一些问题。我想为初学者构建一个注册系统,并且当用户键入用户名时,如果数据库中已经存在用户名,我想检查服务器端的输入。

我在想类似的方法可以解决问题,但我不确定这是否是进行实时身份验证的好方法。

在索引页面上,我们有一个输入,其名称和标识为“用户名”,并且:

<script type="text/javascript">
   $('#username').on('keyup', function(e){
var parameter = { parameter: $(this).val() };
   $.get( '/validate',parameter, function(data) {
      console.log(data);
 });
 });
</script>


所以我的想法是使用onkeyup函数,然后使用$ .get函数发送请求。

var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
  res.render('index');
});

router.get('/validate', function(req, res) {
     var val=req.query.parameter;
    if (val!=undefined){
        var query=req.connection.query("select * from registeredusers where username="+req.connection.escape(val),function(err,result){
            if(err){
                console.error(err);
                return;
            }
            console.log(query.sql);
            var num=result.length;
            console.log(num);
            if(num==1){

                res.send('Username already exists ');
            }

         });
    }
});


在过去,我使用php进行了大量工作,因此我使用了ajax,但是现在我不确定是否仍应使用ajax,所以我的问题是:
这是进行实时身份验证的正确方法还是有更好的方法?
您可以通过与我分享一些有关寄存器系统外观的代码来为我指明正确的方向吗?

最佳答案

X_maras实际上已经让一切变得悲伤。如果您愿意,请使用ajax发送请求。但是我建议您得到一个像邮递员这样的程序来测试您的api并从那里发出请求。这里有点sn。我将措辞保留为“参数”,但建议您使用id或userId等

router.get('/register', function(req, res) {
    var val = req.body.parameter // if you send the parameter in body
    var val = req.params.parameter // if you send it as a url parameter
    if (val !== undefined){
        return res.send("no parameter provided")
    }
    var user = ... // do here your database stuff
    if(err){
        console.error(err)
        return res.send("Error")
    }
    if(!user){
        // register the user
    }

    res.send({user: user})
})

09-27 19:18