首页 > 解决方案 > 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'))

标签: javascriptmysqlnode.jsexpress

解决方案


为此,您需要使用 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!');
});

文档:Express 4.x 文档


推荐阅读