我正在尝试检查数据库中的用户是否也存在。如果我将用户添加到数据库而不检查是否存在具有该名称的人,则我的代码可以正常工作。当我尝试检查它时会出现问题,因为代码可以识别用户是否存在,但如果不存在,则无法将用户添加到数据库中。有效的代码是这一个(函数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();
});
如果有人知道如何解决这种情况,我将不胜感激!
我做了一个抛出这个例外的版本:
答案 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;