如何解析节点js mysql中的电子邮件?
我已经创建了一个包含以下字段的普通注册表: 姓名、电子邮件、出生日期、性别、密码 我使用的是express.js,我通过 请求正文(参数) console.log(req.body)显示所有参数 现在我有了mysql表,它的列与前面提到的相同。如果我使用普通字符串(例如:abcs)插入,它就会工作,即值被插入到mysql表中。此外,表单中的电子邮件是数据库中的用户名。 当我尝试插入所有字段时,它显示错误:(未知用户名字段)。用户名varchar(50)是它的定义。在日志中,我看到密码字段的输入用单引号括起来,但对于电子邮件,它变成了:('user@mail""com"。我还使用了knex,mysql文档中提到的其他方法,并得到了相同的错误(未知用户名) 有人能告诉我如何通过nodejs+express在mysql数据库中存储电子邮件吗 db.js如何解析节点js mysql中的电子邮件?,mysql,node.js,express,Mysql,Node.js,Express,我已经创建了一个包含以下字段的普通注册表: 姓名、电子邮件、出生日期、性别、密码 我使用的是express.js,我通过 请求正文(参数) console.log(req.body)显示所有参数 现在我有了mysql表,它的列与前面提到的相同。如果我使用普通字符串(例如:abcs)插入,它就会工作,即值被插入到mysql表中。此外,表单中的电子邮件是数据库中的用户名。 当我尝试插入所有字段时,它显示错误:(未知用户名字段)。用户名varchar(50)是它的定义。在日志中,我看到密码字段的输入用
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日或其他时间输入,因为这真的不关您的事。