javascript - Post方法后重定向,expressjs
问题描述
我正在学习 ExpressJS,到目前为止我完成了用户注册部分,但是当我想在完成注册后重定向到主页时,单击提交按钮后它没有显示 json。我可以知道我该怎么做。
数据库
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database:'reciepeapp'
});
module.exports = con
the ORM
const con = require('./db')
甲骨文
const orm = {
insertOne: function (values, cb) {
const sqlQuery = "INSERT INTO authentication(username,password) VALUES ?";
con.query(sqlQuery, [values],function (err, data) {
if (err) {
console.log(err)
cb(err, null);
} else {
cb(null, data);
}
});
},
}
module.exports = orm;
route.js
这里我将注册时获得的数据(注册索引html)插入到数据库中。它运行良好,但我想重定向到主页。
const express = require('express');
const app = express()
const router = express.Router()
const bcrypt = require('bcrypt');
bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
const orm = require('../models/orm')
router.get('/',(req,res)=>
res.render('home')
)
router.get('/login',(req,res)=>
res.render('login')
)
router.get('/register',(req,res)=>
res.render('register')
)
router.post("/register", async (req, res) =>{
try {
const hashedPassword = await bcrypt.hash(req.body.password,10)
values = { username: req.body.name,
password:hashedPassword }
orm.insertOne(values, function(error) {
if (error) {
return res.status(401).json({
message: 'Not able to add'
});
}
values = { username: values.username,
password: values.password }
orm.insertOne(values, function(error) {
if (error) {
return res.status(401).json({
message: 'Not able to add'
});
}
**return res.send({
username: values.username,
password: values.password
});**
});
});
}
catch {
}
});
module.exports = router
const express = require('express');
const app = express()
const bodyParser = require("body-parser");
const indexRouter = require('./routes/route')
const con = require('./models/db')
con.connect(function(err) {
if (err) {
return console.error('error: ' + err.message);
}
console.log('Connected to the MySQL server.');
});
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
var exphbs = require('express-handlebars');
console.log(__dirname)
app.use('/',express.static(__dirname + '/public'));
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
app.use('/',indexRouter)
const PORT = 5000;
app.listen(PORT,()=>console.log('it started on 5000'))
解决方案
为此,您需要使用 express 的重定向方法。
例子:
var express = require('express');
var app = express();
const urlBase = 'localhost:3000/'
app.post('/', function(req, res) {
const redirectUrl = "index.html"
res.redirect(urlBase + redirectUrl);
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
推荐阅读
- java - Java TestPassByvalue
- python - 是否可以将布尔列设置为 Flask-SQLalchemy 中的唯一约束?
- alloy - 使用 Alloy 建模一个简单的库
- ruby-on-rails - 导轨。使用像 rest 一样的 web socket,但是有一个开放的连接
- docker - 无法将 docker 存储库添加到 Ubuntu 18.10 - 宇宙
- r - 在 R 中制作 1000 个列联表
- tibco - Tibco Ems ha/dr 解决方案
- javascript - 如何处理文本框中的表达式取决于 java 脚本中的复选框?
- awk - 在awk cli中的同一列中分隔两个单词?
- javascript - 使用 Ajax 选择不加载选项