Javascript 如何从html页面(nodejs-express)将选定的数据库列存储为变量?

Javascript 如何从html页面(nodejs-express)将选定的数据库列存储为变量?,javascript,html,mysql,node.js,express,Javascript,Html,Mysql,Node.js,Express,我有一个页面,显示mysql数据库中的航班。首先,我有一个表单,用户在其中选择航班的目的地和日期,然后提交表单后,我转到另一个页面,根据用户的选择显示航班。在每个航班上都有一个Book按钮,可以在另一个页面重定向用户。当用户单击此按钮(并选择航班)时,我想从数据库中获取所选航班的id,可能将其存储在变量(或其他)中,以了解用户选择的航班。这是我的密码: index.js(以下是路线) airticketcontroller.js const mysql = require('mysql');

我有一个页面,显示mysql数据库中的航班。首先,我有一个表单,用户在其中选择航班的目的地和日期,然后提交表单后,我转到另一个页面,根据用户的选择显示航班。在每个航班上都有一个Book按钮,可以在另一个页面重定向用户。当用户单击此按钮(并选择航班)时,我想从数据库中获取所选航班的id,可能将其存储在变量(或其他)中,以了解用户选择的航班。这是我的密码:
index.js(以下是路线)

airticketcontroller.js

const mysql = require('mysql');

// DB connection
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'myuser',
    password: 'mypassword',
    database: 'mydatabase'
});

connection.connect(function(error) {
    if (!!error) console.log(error);
    else console.log('Database Connected!');
});

//---------------
var fromDestination, toDestination, departDate, returnDate;
var departFlightId, returnFlightId;

exports.airForm = (req, res) => {
    fromDestination = req.body.from_destination;
    toDestination = req.body.to_destination
    departDate = req.body.depart_date;
    returnDate = req.body.return_date;
    res.redirect('/air_ticketsSelect');
}

exports.displayFlights = (req, res, next) => {
    let query = connection.query({ sql: "SELECT * FROM flight WHERE from_destination=? AND to_destination=? AND depart_date=?", values: [fromDestination, toDestination, departDate] }, function(err, results, fields) {
        if (err) throw err;
        res.render('air_ticketsSelect', {
            title: 'Flights',
            departFlights: results
        });
    });
}

exports.saveDepartureFlightForm = (req, res) => {
    let query = connection.query({ sql: "SELECT * FROM flight WHERE from_destination=? AND to_destination=? AND depart_date=?", values: [fromDestination, toDestination, departDate] }, function(err, results, fields) {
        if (err) throw err;
        res.render('air_ticketsSelectReturn', {
            title: 'Flights',
            departFlightId: results.flight_id
        });
        console.log(departFlightId);
    });
}

exports.displayFlightsForReturn = (req, res) => {
    let query = connection.query({ sql: "SELECT * FROM flight WHERE from_destination=? AND to_destination=? AND depart_date=?", values: [toDestination, fromDestination, returnDate] }, function(err, results, fields) {
        if (err) throw err;
        res.render('air_ticketsSelectReturn', {
            title: 'Return Flights',
            returnFlights: results
        });
    });
}
机票。ejs(第一种形式)


往返
单程
发件人:

致:
出发日期: 返回日期:
搜索航班
机票选择.ejs(显示航班的页面)


离开

航空公司 从…起 到 出发日期 到达日期 出发时间 到达时间 价格 行动 书
当用户单击按钮Book时,用户将被重定向到air_tickets selectreturn,这是一个类似的返回页面。我想将航班号存储在一个变量中,以便以后使用。 此外,这是航班的mysql表:

您可以利用会话


根据请求和操作为当前用户维护会话。

创建另一个变量
var3
,并在第一个查询中初始化它

var var3;

exports.displayFlights = (req, res, next) => {
    let query = connection.query({ sql: "SELECT * FROM flight WHERE from_destination=? AND to_destination=? AND depart_date=?", values: [fromDestination, toDestination, departDate] }, function(err, results, fields) {
        if (err) throw err;

        var3 = results;

        res.render('air_ticketsSelect', {
            title: 'Flights',
            departFlights: results
        });
    });
}
这样,您就不必一次又一次地查询数据库。您只需在传递查询结果时传递var3即可。像

exports.saveDepartureFlightForm = (req, res) => {
    
        res.render('air_ticketsSelectReturn', {
            title: 'Flights',
            departFlightId: var3.flight_id
        });
        console.log(departFlightId);
    });
}
编辑:

代码中有三个问题<!-- Display Flights --> <div class="col-md-9" id="jumboCopy"> <h1> DEPARTURE</h1> <br> <form id="departureFlightForm" method="POST" action="/saveDepartureFlightForm"> <table class="table table-dark table-striped"> <thead> <tr> <th>Airline</th> <th>From</th> <th>To</th> <th>Depart date</th> <th>Arrival date</th> <th>Depart time</th> <th>Arrival time</th> <th>Price</th> <th>Action</th> </tr> </thead> <tbody> <% departFlights.forEach(function(flight){ %> <tr> <td> <%= flight.airline %> </td> <td> <%= flight.from_destination %> </td> <td> <%= flight.to_destination %> </td> <td> <%= flight.depart_date.toLocaleDateString('el-GR') %> </td> <td> <%= flight.arrival_date.toLocaleDateString('el-GR') %> </td> <td> <%= flight.depart_time %> </td> <td> <%= flight.arrival_time %> </td> <td> <%= flight.flight_price + ' €' %> </td> <td> <!-- <a href="air_ticketsSelectReturn" type="button" class="btn btn-light btn-small"></i>Book</a> --> <button type="submit" href="air_ticketsSelectReturn" class="btn btn-light btn-small">Book </td> </tr> <% }); %> </tbody> </table> </form> </div>
var var3;

exports.displayFlights = (req, res, next) => {
    let query = connection.query({ sql: "SELECT * FROM flight WHERE from_destination=? AND to_destination=? AND depart_date=?", values: [fromDestination, toDestination, departDate] }, function(err, results, fields) {
        if (err) throw err;

        var3 = results;

        res.render('air_ticketsSelect', {
            title: 'Flights',
            departFlights: results
        });
    });
}
exports.saveDepartureFlightForm = (req, res) => {
    
        res.render('air_ticketsSelectReturn', {
            title: 'Flights',
            departFlightId: var3.flight_id
        });
        console.log(departFlightId);
    });
}
router.post('/form-submit', function(req,res,next){
    airTicketsController.airForm(req,res);
}