如何解析节点js mysql中的电子邮件?

如何解析节点js mysql中的电子邮件?,mysql,node.js,express,Mysql,Node.js,Express,我已经创建了一个包含以下字段的普通注册表: 姓名、电子邮件、出生日期、性别、密码 我使用的是express.js,我通过 请求正文(参数) console.log(req.body)显示所有参数 现在我有了mysql表,它的列与前面提到的相同。如果我使用普通字符串(例如:abcs)插入,它就会工作,即值被插入到mysql表中。此外,表单中的电子邮件是数据库中的用户名。 当我尝试插入所有字段时,它显示错误:(未知用户名字段)。用户名varchar(50)是它的定义。在日志中,我看到密码字段的输入用

我已经创建了一个包含以下字段的普通注册表: 姓名、电子邮件、出生日期、性别、密码 我使用的是express.js,我通过 请求正文(参数)

console.log(req.body)显示所有参数

现在我有了mysql表,它的列与前面提到的相同。如果我使用普通字符串(例如:abcs)插入,它就会工作,即值被插入到mysql表中。此外,表单中的电子邮件是数据库中的用户名。 当我尝试插入所有字段时,它显示错误:(未知用户名字段)。用户名varchar(50)是它的定义。在日志中,我看到密码字段的输入用单引号括起来,但对于电子邮件,它变成了:('user@mail""com"。我还使用了knex,mysql文档中提到的其他方法,并得到了相同的错误(未知用户名)

有人能告诉我如何通过nodejs+express在mysql数据库中存储电子邮件吗

db.js

var mysql = require('mysql');

// setup mysql
var dbcon = mysql.createConnection({
    host: 'localhost',
    database: 'test',
    user: 'flip',
    password: 'flop'
});

dbcon.connect(function (err) {
    if (err) throw err;
    console.log("Connected to db");
});
module.exports = dbcon;
routes/index.js:

var dbcon = require('../db');
.
.
router.post('/signup', function (req, res) {
    console.log(req.body);
   /* knex('users').insert( {
        user_id: 1,
        password: req.body.su_password,
        u_firstname: req.body.su_firstname,
        u_lastname: req.body.su_lastname,
        u_gender: req.body.su_gender,
        u_dob: req.body.su_date,
    }).then(function(arg){
        console.log(arg);
    });
    */
    dbcon.connect(function (err) {
        var sqlv = {
            user_id: 1,
            password: req.body.su_password,
            u_firstname: req.body.su_firstname,
            u_lastname: req.body.su_lastname,
            u_gender: req.body.su_gender,
            u_dob: req.body.su_date
        };

        /*var sql = "insert into `users` values (?,??,??,??,??,??,??);";
        var sqlv = [1,req.body.su_email, req.body.su_password, req.body.su_firstname, req.body.su_lastname, req.body.su_gender, req.body.su_date];
        sql = mysql.format(sql,sqlv);
        */
        //var sql ="insert into usertmp (`username`,`password`) values ('"+req.body.su_email+"','"+req.body.su_password+"');";
        dbcon.query("insert into users values ? ;", sqlv, function (err, result) {
            if (err) {
                console.log(err);
                throw err;
            }
            console.log("inserted into users " + result);
        });
    });
res.redirect('/');
});
{ su_firstname: 'user',
  su_lastname: 'virus',
  su_email: 'user@mail.com',
  su_gender: 'm',
  su_date: '1999-01-01',
  su_password: 'passowrd00' }
routes/index.js中的console.log(请求主体):

var dbcon = require('../db');
.
.
router.post('/signup', function (req, res) {
    console.log(req.body);
   /* knex('users').insert( {
        user_id: 1,
        password: req.body.su_password,
        u_firstname: req.body.su_firstname,
        u_lastname: req.body.su_lastname,
        u_gender: req.body.su_gender,
        u_dob: req.body.su_date,
    }).then(function(arg){
        console.log(arg);
    });
    */
    dbcon.connect(function (err) {
        var sqlv = {
            user_id: 1,
            password: req.body.su_password,
            u_firstname: req.body.su_firstname,
            u_lastname: req.body.su_lastname,
            u_gender: req.body.su_gender,
            u_dob: req.body.su_date
        };

        /*var sql = "insert into `users` values (?,??,??,??,??,??,??);";
        var sqlv = [1,req.body.su_email, req.body.su_password, req.body.su_firstname, req.body.su_lastname, req.body.su_gender, req.body.su_date];
        sql = mysql.format(sql,sqlv);
        */
        //var sql ="insert into usertmp (`username`,`password`) values ('"+req.body.su_email+"','"+req.body.su_password+"');";
        dbcon.query("insert into users values ? ;", sqlv, function (err, result) {
            if (err) {
                console.log(err);
                throw err;
            }
            console.log("inserted into users " + result);
        });
    });
res.redirect('/');
});
{ su_firstname: 'user',
  su_lastname: 'virus',
  su_email: 'user@mail.com',
  su_gender: 'm',
  su_date: '1999-01-01',
  su_password: 'passowrd00' }
错误(对于当前示例):

{Error:ER_PARSE_Error:SQL语法有错误;请检查 与MySQL服务器版本相对应的手册,用于在第1行的“
user\u id
=1、
password
='passowrd00'、
u firstname
='user'、
u lastname
=”附近使用正确语法

错误(对于使用实际sql查询并在每个值周围加单引号的insert):

未处理的拒绝错误:ER\u错误\u字段\u错误:未知列“用户名” 在“字段列表”中,我找到了它! 这不是nodejs/expresjs,而是来自数据库。
在数据库中,我使用了触发器,但忘记了使用新/旧前缀。

尝试使用
VARCHAR(255)
作为默认设置,仅当您有非常令人信服的理由时才加以限制。对于许多事情,例如电子邮件地址,较短的字段可能会给您的用户带来巨大的麻烦。您是否可以与我们共享源代码?仅通过阅读您的问题很难了解您是如何做到这一点的。另一个技巧是只收集p个人信息,如性别,如果您的服务明确要求。大多数情况下,它从未被使用。只有在您需要确认某人的年龄时,出生日期才真正相关。大多数人只会在1980年1月1日或其他时间输入,因为这真的不关您的事。