我的应用程序在执行route.post之后调用route.get

时间:2019-02-02 09:17:22

标签: javascript node.js express

我不知道怎么回事。

login.js是路由脚本。 login.js中包含使用app.js代码。

下面是我想做的流程。

  1. 连接到localhost:3000/login->称为route.get('/',...)
  2. 检查登录信息。
  3. 将信息发送到router.post('/loginCheck,...)
  4. 如果登录信息是正确的,使主页res.render('main')

但是下面是我无法理解的预期流程。

  1. 连接到localhost:3000/login->称为route.get('/',...)
  2. 检查登录信息
  3. 将信息发送到router.post('/loginCheck,...)
  4. 如果登录信息是正确的,使主页res.render('main')
  5. 流进入route.get('/',...)res.render('login')是重新执行。

即使有任何代码调用route.get('/',...)

,我也无法理解为什么流在router.post('/loginCheck,...)之后进入route.get('/',...)

服务器端:

//app.js

'use strict';

/******************
 * Declare global variables *
 *******************/
global.__base = __dirname + "/src";
global.__root = __dirname;

/******************
 * Call libraries *
 ******************/
const bodyParser = require('body-parser');
const Logger = require(__base + '/lib/util/logger');
const express = require('express');
const app = express();


/******************
 * Milddleware Configuration*
 ******************/
app.use(bodyParser.urlencoded({extended : false}));
app.use(bodyParser.json());
app.use(express.static(__root + '/public'));
app.set('view engine','ejs');
app.set('views', __root + '/views');


/******************
 * Environment Configuration *
 ******************/
const PORT = process.env.PORT || 3000;

/******************
 * Use router in express *
 ******************/
const main = require(__root + '/routes/main');
const login = require(__root + '/routes/login');

app.use("/main", main);
app.use("/login", login);

app.listen(PORT, function() {
    Logger.info(`connection complete. Open page localhost:${PORT}`);
});

    //login.js
    
    /****************************************
     * Call libraries *
     ****************************************/
    const express = require('express');
    const router = express.Router();
    const mysql = require(__base + '/lib/db/async-mysql');
    const Logger = require(__base + '/lib/util/logger');


    /****************************************
     * Declare Classes *
     ****************************************/
    const CHECK_LOGIN_INFO_SQL = require(__root + '/template/sql/checkLoginInfo').CHECK_LOGIN_INFO

    /****************************************
     * router posts/gets *
     ****************************************/
    const binder = [];

    router.post('/loginCheck', async function (req,res){
        const id = req.body.id;
        const pw = req.body.pw;
        let result = false;

        binder.push(id);

        // res.render('main');
        const sqlResult = await mysql.query(CHECK_LOGIN_INFO_SQL,binder);

        if(sqlResult[0].PW){
            if(sqlResult[0].PW == pw){
                // result = true;
                res.render('main',function(err, html) {
                    console.log('error : ' + err);
                });
            }
        }
    });

    router.get('/', function(req,res){
        console.log('login page open')
        res.render('login');
    });

    module.exports = router;

客户端:

/******************
 * Login page send post *
 ******************/
const HOST_LOGIN = "/login";
service.checkLogin = function(params) {
    service._sendJsonToServer(HOST_LOGIN+'/loginCheck', 'json', params, function(data){
        //task after ajax success
    });
};



/******************
 * Ajax template *
 ******************/
service._sendJsonToServer = function(url, dataType, params,callback) {
    $.ajax({
        url : url,
        data : JSON.stringify(params),
        dataType : dataType,
        type : 'POST',
        contentType : 'application/' + dataType,
        // error : errorHandler,
        success: callback
    });
};

0 个答案:

没有答案