检查用户是否已经存在(Node.js和mysql)

时间:2016-12-28 23:30:56

标签: javascript mysql node.js

我正在尝试检查数据库中的用户是否也存在。如果我将用户添加到数据库而不检查是否存在具有该名称的人,则我的代码可以正常工作。当我尝试检查它时会出现问题,因为代码可以识别用户是否存在,但如果不存在,则无法将用户添加到数据库中。有效的代码是这一个(函数DB()是代码与数据库建立连接的地方):

app.post('/Registro', function(req, res){
var conDB=DB();
var reg={
    Usuario: req.body.Usuario,
    Contra: req.body.Contra
};
console.log(req.body.Usuario+" "+req.body.Contra);
var query=conDB.query('INSERT INTO Usuario SET ?',reg,function(err, res){

});
res.send("Usuario: "+req.body.Usuario+" y Contraseña: "+req.body.Contra + "REGISTRADOS");
conDB.end(); });

不起作用的代码(我试图检查用户是否存在)是这样的:

app.post('/Registro', function(req, res){
var conDB=DB();
var reg={
    Usuario: req.body.Usuario,
    Contra: req.body.Contra
};
var UsuarioReg=req.body.Usuario;
conDB.query('SELECT * FROM Usuario WHERE Usuario = ?', UsuarioReg,function(err,rows){
    if(err)
        return console.log(err);
    if (!rows.length)
    {
            conDB.query('INSERT INTO Usuario SET ?',reg,function(err, respuesta){
            return respuesta.send("Usuario: "+req.body.Usuario+" y Contraseña: "+
                    req.body.Contra + "REGISTRADOS");
            }); 
    }
    else
    {
        return res.send("Este usuario ya existe");
    }
});
    conDB.end(); 
});

如果有人知道如何解决这种情况,我将不胜感激!

我做了一个抛出这个例外的版本:

enter image description here

2 个答案:

答案 0 :(得分:2)

我打赌在执行查询之前数据库连接正在关闭。我将conDB.end()从第一个查询移到err处理程序中,然后移动到第二个查询的回调函数中。

编辑:

app.post('/Registro', function(req, res){
    var conDB=DB();
    var reg={
        Usuario: req.body.Usuario,
        Contra: req.body.Contra
    };
    var UsuarioReg=req.body.Usuario;
    var ContraReg=req.body.Contra;
    conDB.query('SELECT * FROM Usuario WHERE Usuario = ? and Contra= ?',  [UsuarioReg,ContraReg]
,function(err,rows){
    if(err) {
        conDB.end();
        return console.log(err);
    }

    if (!rows.length)
    {
        conDB.query('INSERT INTO Usuario SET ?',reg,function(err, results){
            conDB.end();
            return res.send("Usuario: "+req.body.Usuario+" y Contraseña: "+
                req.body.Contra + "REGISTRADOS");
        });
    }
    else
    {
        conDB.end();
        return res.send("Este usuario ya existe");
    }
});

});

答案 1 :(得分:1)

感谢您的想法。对我有帮助。然后,我可以在代码中注册路线。

            var express = require("express");
            var router = express.Router();
            //var usersModel = require("../models/users");
            var db = require("../common/database");
            var conn = db.getConnection();
            router.get("/", function (req, res) {
                res.json({ "message": "This is Admin page" });
            })
            router.get("/register_success/:email", function (req, res) {
                res.render("register_success", { email: req.params.email });
            })
            router.get("/signup", function (req, res) {
                res.render("signup", {
                    data: {
                        email: "",
                        password: "",
                        first_name: "",
                        last_name: ""
                    }, error: false, message: ""
                });
            })
            router.post('/signup', function (req, res) {
                var user = req.body;
                var Oneuser = {
                    email: user.email,
                    password: user.passwd,
                    first_name: user.firstname,
                    last_name: user.lastname,
                    created_at: new Date()
                };
                conn.query('SELECT * FROM users WHERE email = ?', [Oneuser.email]
                    , function (err, rows) {
                        if (err) {
                            conn.end();
                            console.log(err);
                            res.render("signup", {
                                data: {
                                    email: user.email,
                                    password: user.passwd,
                                    first_name: user.firstname,
                                    last_name: user.lastname
                                }, error: true, message: err
                            });
                        }
                        if (!rows.length) {
                            conn.query('INSERT INTO users SET ?', Oneuser, function (err2, results) {
                                if (err2) {
                                    console.log(err2);
                                    res.render("signup", {
                                        data: {
                                            email: user.email,
                                            password: user.passwd,
                                            first_name: user.firstname,
                                            last_name: user.lastname
                                        }, error: true, message: err2
                                    });
                                } else {
                                    res.redirect("/admin/register_success/" + Oneuser.email);
                                }
                            });
                        }
                        else {
                            console.log("Email is exists");
                            res.render("signup", {
                                data: {
                                    email: user.email,
                                    password: user.passwd,
                                    first_name: user.firstname,
                                    last_name: user.lastname
                                }, error: true, message: "Email is exists"
                            });
                        }
                    });
            });
            module.exports = router;