Как исправить запрос sql, чтобы добавить новую запись, используя метод POST? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытался добавить новую запись в таблицу, используя метод POST, но это не работает. i've been copying an INSERT operator right from the SQL constructor on phpMyAdmin and it turns red

var crypto = require('crypto');
var uuid = require('uuid');
var express = require('express');
var mysql = require('mysql');
var bodyParser = require('body-parser');

//Connection to MySQL
var con = mysql.createConnection({
    host: 'localhost',
    user:'root',
    password:'',
    database:'database'
});

// Password 
var genRandomString = function(length) {
    return crypto.randomBytes(Math.ceil(length/2)).toString('hex') // convert to hex format
    .slice(0,length); // return required number of characters
};

var sha512 = function(password, salt) {
    var hash = crypto.createHmac('sha512', salt); // use sha512
    hash.update(password);
    var value = hash.digest('hex');
    return {
        salt: salt,
        passwordHash: value
    };
};

function saltHashPassword(userPassword) {
    var salt = genRandomString(16); // generates random string with 16 characters to salt
    var passwordData = sha512(userPassword, salt);
    return passwordData;
}

var app = express();
app.use(bodyParser.json()); // Accept JSon params
app.use(bodyParser.urlencoded({extended: true})); // Accept URL Encoded params

app.post('/register', (req, res, next)=> {
    var post_data = req.body; // Get POST params
    var uid = uuid.v4(); //get UUID v4
    var plaint_password = post_data.password; // get password from post params
    var hash_data = saltHashPassword(plaint_password);
    var password = hash_data.passwordHash; // get hash value
    var salt = hash_data.salt; // get salt

    var name = post_data.name;
    var email = post_data.email;

//
  // The problem is here  
//

con.query('SELECT * FROM user where email=?', [email], function(err, result, fields){
            con.on('error', function(err) {
                console.log('[MySQL ERROR]', err);
            });

        if (result && result.length)
            res.json('User already exists!');
        else {
            con.query('INSERT INTO `user` (`unique_id`, `name`, `email`, `encrypted_password`, `salt`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, NOW(), NOW())',[uid,name,email,password,salt],function(err, result, fields) {
                con.on('error', function(err) {
                    console.log('[MySQL ERROR]', err);
                    res.json('Some registration error occured: ', err);
            });
                res.json('User have been registered successfully');
            })
        }
    });   
})

//Start Server
app.listen(3000, () => {
    console.log('Something cool is running on port 3000');
})

Затем я использую клиент AdvancesREST для отправки этих параметров в мою БД, это sends POST method parameters successfully, но новая запись не отображается

1 Ответ

0 голосов
/ 18 апреля 2020

Это было проще, чем я ожидал. Чтобы решить эту проблему, вам нужно удалить кавычки из этого запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...