我是nodeJS的新手,我一直在尝试创建一个带有验证的注册表单。
验证部分已完成 sql 查询语句,但我无法从服务器端重定向回带有消息信息(例如"电子邮件地址已存在"(的注册表。
如何在客户端"寄存器.js上处理此问题?
注册.js
<form id='register-form' method="POST" action="http://localhost:3306/register">
服务器.js
app.post('/register', (req,res) => {
var email = req.body.email;
var password = req.body.password;
let sql = "SELECT * FROM user WHERE email='" + email + "'";
db.query(sql,(err,result) => {
if (err) throw err;
if (result.length > 0) {
console.log("user already exists");
res.redirect('http://localhost:3000/#/Register');
} else {
insertUser(email,password);
res.send(email + " has been added to database");
}
有多个查询...
- 我不确定您的寄存器.html文件是否位于使用快速静态中间件公开访问的任何文件夹(例如公共(中。如果是,我希望您正在设置静态中间件
app.use(express.static('public'((;
- 如果数据库中已经存在电子邮件 ID,您是否要发送响应作为错误请求?,请尝试以下操作
if(!result.length(
res.status(400(.json('电子邮件 ID 已存在'(;
或
res.status(400(.send(400, {error:'Email ID Been Exist'}(;
您需要一个正文解析器来解析 URL 编码的表示法。对我有用的示例代码:
let express=require('express'); let app = express(); let server = require('http').createServer(app); var bodyParser = require('body-parser'); var parseUrlencoded = bodyParser.urlencoded({ extended: false }); app.use(express.static('public')); app.post('/register', parseUrlencoded, (req,res) => { var email = req.body.email; var password = req.body.password; if (!email) { res.writeHead(404, {Location: 'http://localhost:3306/register.html'} ); res.end(); } else{ res.status(200).json('email is not empty'); } }); server.listen(3306, ()=> console.log('app started'));
一些示例:在使用nodejs和express制作的REST API中设置响应状态和JSON内容的正确方法
错误:将标头发送到客户端后无法设置标头