首页 > 解决方案 > 快速 Rest API 中的验证

问题描述

我正在使用 Rest api 中的 expressjs 将注册值保存到数据库中,但是我如何评估我的字段(名称、电子邮件、密码)所以如果我在没有数据的情况下保存,那么与字段相关的错误消息应该显示这是我的代码

var mysql = require('mysql');
    var con = mysql.createConnection({
     host: "localhost",
      user: "root",
      password: "",
      database: "mydb"
    });

    var toTime = new Date();

      con.connect(function(err) {
      if (err) throw err;
      console.log("Connected!");
      var sql = "INSERT INTO users (name, email,password) VALUES ('"+req.body.name+"','"+req.body.email+"','"+req.body.password+"')";
      con.query(sql, function (err, result) {
        if (err) throw err;
        console.log("1 record inserted");
         });
    });

标签: mysqlnode.jsexpress

解决方案


首先注意:您的代码容易受到 SQL 注入的影响。参考:这个SO问题

现在,您可以创建一个验证函数,该函数boolean在查询之前返回并使用它,例如

function validateFunc(...params){
    return params.reduce((p,c)=> p && (c !== null && c !== undefined), true);
}

并像使用它一样,

if(!validateFunc(req.body.name, req.body.email, req.body.password)){
    // throw some error 
}
var sql = "INSERT INTO users (name, email,password) VALUES ('"+req.body.name+"','"+req.body.email+"','"+req.body.password+"')";

推荐阅读