【问题标题】:How to fix a sql query to add a new record using POST method?如何修复 sql 查询以使用 POST 方法添加新记录?
【发布时间】:2020-07-31 00:55:37
【问题描述】:

我一直在尝试使用 POST 方法将新记录添加到表中,但它不起作用。

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 客户端将这些参数发送到我的数据库,它是 ,但没有显示新记录

【问题讨论】:

  • 听起来像是某处需要“提交”。

标签: mysql node.js json


【解决方案1】:

这比我预期的要容易。要解决此问题,您需要从此查询中删除引号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多