Почему запрос не полностью передается в БД?

Есть вот такой код:

app.get('/reg',function(req,res){
    res.render('register');
});
app.post('/reg', urlencodedParser ,function(req,res){
    con.connect(function(err){});
    let login = '\''+req.body.login+'\',';
    let pass = '\''+req.body.pass+'\'';
    let query = "INSERT INTO `myuser` (login,password) VALUES ("+login+pass+");";
    console.log(query);
    con.query(query,function(err,result,field){});
    con.end(function(err){})
    res.render('register',{});
});

Когда захожу на сервер и ввожу данные, в базу данных (смотрю в mysqlи phpmyadmin) добавляется только первый раз поля ввода.

Если что, то ошибок нода не выдает, app.post запрос действует верно, а все модули у меня подключены выше по файлу.

Почему и как исправить?


PS: Если вместо переменных логин и пароль ввести обычные данные они отлично запишутся в БД. Поля в БД login и password имеют тип varchar.


Ответы (1 шт):

Автор решения: nörbörnën

Попробуйте написать более чисто и добавить вывод ошибок в лог:

// @ts-check
const express = require('express');
const bodyParser = require('body-parser');
const mysql = require('mysql');

const db = mysql.createConnection({
  host: 'localhost',
  user: 'me',
  password: 'secret',
  database: 'my_db'
});

const app = express();
const urlencodedParser = bodyParser.urlencoded({ extended: true });

app.get('/reg', (req, res) => {
  res.render('register');
});

app.post('/reg', urlencodedParser, (req, res) => {
  console.log(req.body);

  const sql = `INSERT INTO myuser(login, password) VALUES (?)`;
  const binds = [
    req.body.login,
    req.body.pass
  ];

  db.query(sql, [ binds ], (err, data, fields) => {
    if (err) {
      console.error(err);
      throw err;
    }
    console.log(data);
    console.log(fields);
    res.render('register', {});
  });  
});

app.listen(3003, 'localhost');
→ Ссылка