隨著網路的不斷發展,越來越多的商家開始使用線上預約系統來方便客戶預約和管理業務。在這種情況下,利用Node.js實現線上預約功能的Web專案正逐漸成為一個熱門的話題。
在這篇文章中,我們將簡單介紹如何使用Node.js開發一個基於Web的線上預約系統,並提供一些程式碼範例,在您開始製作自己的線上預約系統之前,其希望能夠幫助您了解這個過程。
在開發這樣一個Web專案之前,我們需要先進行仔細的需求分析。以下是一些必要的功能和特性,在這個Web專案中需要實現的:
在本例中,我們將使用MySQL資料庫來保存預約資訊。需要建立一個名為「Appointments」的表,它將包含以下列:
下面是可以用來建立該表的SQL語句:
CREATE TABLE Appointments ( ID INT NOT NULL AUTO_INCREMENT, CustomerName VARCHAR(50), CustomerEmail VARCHAR(50), ServiceType VARCHAR(50), AppointmentDate DATE, AppointmentTime TIME, Status ENUM('Pending', 'Accepted', 'Rejected'), PRIMARY KEY (ID) );
首先,我們需要在本機上安裝Node.js。現在,我們將建立一個名為「AppointmentSystem」的Node.js應用程式。
建立一個名為「AppointmentSystem」的資料夾,並在資料夾中建立一個名為「app.js」的檔案。這個文件將是我們的Node.js應用程式的主文件,並包含我們的所有程式碼。
依照下列步驟安裝所需的第三方Node.js模組:
npm init
npm install express ejs nodemailer mysql body-parser express-session --save
首先,我們需要在我們的主檔案「app.js」中引入我們剛剛安裝的所有模組:
const express = require('express'); const ejs = require('ejs'); const nodemailer = require('nodemailer'); const mysql = require('mysql'); const bodyParser = require('body-parser'); const session = require('express-session'); const app = express();
接下來,我們需要設定應用程式。我們的應用程式將使用預設的“views”和“public”資料夾,因此我們無需對其進行配置。
app.set('view engine', 'ejs'); app.use(express.static(__dirname + '/public')); app.use(bodyParser.urlencoded({extended: true})); app.use(session({ secret: 'mysecretkey', resave: true, saveUninitialized: true }));
接著,我們需要連接到MySQL資料庫。我們將使用「createConnection」函數來建立一個資料庫連接,然後使用該物件進行查詢。
const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'appointments' });
現在,我們接下來定義我們的路由功能,我們定義兩個路線,一個用於取得預約表格,另一個用於提交運單。
app.get('/', (req, res) => { res.render('index'); }); app.post('/appointment', (req, res) => { const {customerName, customerEmail, serviceType, appointmentDate, appointmentTime} = req.body; pool.query('INSERT INTO Appointments SET ?', { CustomerName: customerName, CustomerEmail: customerEmail, ServiceType: serviceType, AppointmentDate: appointmentDate, AppointmentTime: appointmentTime, Status: 'Pending' }, (error, results) => { if (error) { throw error; } else { const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'youremail@gmail.com', pass: 'yourpassword' } }); const mailOptions = { from: 'youremail@gmail.com', to: customerEmail, subject: 'Your Appointment Request', text: `Dear ${customerName}, Thank you for requesting an appointment with our company. We have received your request and will get back to you as soon as possible. Best regards, The Company` }; transporter.sendMail(mailOptions, (error, info) => { if (error) { throw error; } else { console.log(`Email sent: ${info.response}`); } }); res.render('confirmation', { customerName, customerEmail, serviceType, appointmentDate, appointmentTime }); } }); });
以上程式碼片段中,首先我們使用「pool.query」函數插入新的預約記錄到MySQL資料庫中,然後建立一個Nodemailer郵件傳輸器來傳送確認電子郵件給客戶。最後,我們將客戶的詳細資訊渲染到確認頁面上,以便他們可以查看他們的預約詳細資訊。
最後,我們需要使用“app.listen”函數來啟動我們的應用程序,並提供監聽口。
app.listen(3000, () => { console.log('Server started on port 3000'); });
要啟動server,只需在命令提示字元或終端機中導航到程式資料夾,並執行以下命令:
node app.js
現在,在您的網頁瀏覽器中開啟“localhost:3000”,即可使用您的線上預約系統。
以上是利用Node.js實現線上預約功能的Web項目的詳細內容。更多資訊請關注PHP中文網其他相關文章!