Nodejs - данные вставляются, но я не получаю ответ - PullRequest
0 голосов
/ 03 февраля 2019

Я использую mysql с Nodejs, и мое требование состоит в том, чтобы проверить, существует ли пользователь или нет, и если пользователя нет, мы должны создать этого пользователя.

router.post('/signup', (req, res) => {
    var name = req.body.name;
    var phone = req.body.phone;
    var password = req.body.password;
    var datecreated = req.body.datecreated;
    var dateupdated = req.body.dateupdated;

    db.query("select * from users where name='" + name + "' and password='" + password + "'", (error, rows) => {
        if (error) {
            res.send({ "status": "failure", "Error": error });
        }
        else if (rows.length > 0) {
            res.send({ "status": "exists" });
        }
        else {
            db.query("insert into users(name, password, phone, datecreated, dateupdated) values('" + name + "', '" + password + "', '" + phone + "', '" + datecreated + "', '" + dateupdated + "')"), (error, rows) => {
                if (error) {
                    res.send({ "status": "failure", "Error": error });
                }
                else {
                    res.send({ "status": "success" });
                }
            }
        }
    });
});

Здесь, если пользователь существует, я получаюответ как статус, но если я отправляю нового пользователя, данные вставляются, но я не получаю ответ .Нужна помощь, ребята.

Рабочий раствор:

db.query("select * from users where name='" + name + "' and password='" + password + "'", (error, rows) => {
        if (error) {
            res.send({ "status": "failure", "Error": error });
        }
        else if (rows.length > 0) {
            res.send({ "status": "exists" });
        }
        else {
            db.query("insert into users(name, password, phone, datecreated, dateupdated) values('" + name + "', '" + password + "', '" + phone + "', '" + datecreated + "', '" + dateupdated + "')", (error, rows) => {
                if (error) {
                    res.send({ "status": "failure", "Error": error });
                    res.end();
                }
                else {
                    res.send({ "status": "success" });
                    res.end();
                }
            })
        }
    });

1 Ответ

0 голосов
/ 03 февраля 2019

Проблема заключается в этом коде.Если ошибки не обнаружены, количество строк отправляется методом send().При успешном выполнении другого запроса вызывается другой метод send(), но он не будет работать, поскольку send() завершает соединение после отправки данных.Вы можете запустить send() только один раз, так как при закрытии соединения другой send() не будет работать.Вместо этого используйте res.write(), которые сами не закрывают соединение.send() внутренне реализует res.write(), за которым сразу следует res.end()

if (error) {
            res.send({ "status": "failure", "Error": error });
        }
        else if (rows.length > 0) {
            res.send({ "status": "exists" });
        }
        else {
            db.query("insert into users(name, password, phone, datecreated, dateupdated) values('" + name + "', '" + password + "', '" + phone + "', '" + datecreated + "', '" + dateupdated + "')"), (error, rows) => {
                if (error) {
                    res.send({ "status": "failure", "Error": error });
                }
                else {
                    res.send({ "status": "success" });
                }
            }

Код должен быть

  if (error) {
            res.write({ "status": "failure", "Error": error });
        }
        else if (rows.length > 0) {
            res.write({ "status": "exists" });
        }
        else {
            db.query("insert into users(name, password, phone, datecreated, dateupdated) values('" + name + "', '" + password + "', '" + phone + "', '" + datecreated + "', '" + dateupdated + "')"), (error, rows) => {
                if (error) {
                    res.write({ "status": "failure", "Error": error });
                    res.end()
                }
                else {
                    res.write({ "status": "success" });
                    res.end()
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...