簡體   English   中英

Post方法后重定向,expressjs

[英]Redirect after Post method , 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')

ORM

        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!');
});

文檔: Express 4.x 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM