Trong hướng dẫn này, chúng tôi sẽ tạo một biểu mẫu đơn giản sẽ lưu dữ liệu người dùng vào máy chủ được triển khai trong Node. js với cơ sở dữ liệu MongoDB và cho phép chúng tôi xem dữ liệu đã lưu trên một trang riêng ở định dạng JSON
điều kiện tiên quyết
1. Cài đặt MongoDB
Cách cài đặt và cấu hình MongoDB phụ thuộc vào môi trường của bạn. Chúng tôi sử dụng Cloud9 cho hướng dẫn này, vì vậy sẽ tham khảo hướng dẫn trên trang web chính thức
Trong dòng lệnh bash, chúng tôi sẽ đưa ra các lệnh sau
sudo apt-get install -y mongodb-org mkdir data echo 'mongod --bind_ip=$IP --dbpath=data --nojournal --rest "$@"' > mongod chmod a+x mongod ./mongod
2. Cài đặt các gói cần thiết
Chúng tôi sẽ sử dụng Nút. js với các gói sau
- Express - khung web phổ biến;
- body-parser - phần mềm trung gian phân tích cú pháp cơ thể, cho phép truy cập thuộc tính req.body;
- mongodb - Trình điều khiển MongoDB cho Nút. js
Trong dòng lệnh, chúng tôi sẽ sử dụng các lệnh sau
npm init -y npm i --save express body-parser mongodb
Tạo biểu mẫu
Chúng tôi sẽ tạo tệp có tên index.html trong thư mục public
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Client Data</title> </head> <body> <h1>Please fill data in the form below:</h1> <form method="POST" action="/post-feedback"> <label>Name:<input type="text" name="client-name" required></label> <br> <label>Email:<input type="text" name="client-email" required></label> <br> <label>Comment:<br><textarea name="comment"></textarea></label> <br> <input type="submit" value="Submit"> </form> <a href="/view-feedbacks">View feedbacks</a> </body> </html>
Tạo mã npm init -y npm i --save express body-parser mongodb0
1. Tạo mã ban đầu để phục vụ nội dung tĩnh
var express = require('express'); var path = require('path'); var app = express(); app.use(express.static(path.resolve(__dirname, 'public'))); app.listen(process.env.PORT || 3000, process.env.IP || '0.0.0.0' );
2. Thêm kết nối vào cơ sở dữ liệu
Chúng tôi sẽ sửa đổi mã trước đó và thêm kết nối vào cơ sở dữ liệu
var express = require('express'); var path = require('path'); var mongodb = require('mongodb'); var dbConn = mongodb.MongoClient.connect('mongodb://localhost:27017'); var app = express(); app.use(express.static(path.resolve(__dirname, 'public'))); app.listen(process.env.PORT || 3000, process.env.IP || '0.0.0.0' );
3. Thêm trình xử lý cho bài đăng biểu mẫu
var express = require('express'); var path = require('path'); var bodyParser = require('body-parser'); var mongodb = require('mongodb'); var dbConn = mongodb.MongoClient.connect('mongodb://localhost:27017'); var app = express(); app.use(bodyParser.urlencoded({ extended: false })); app.use(express.static(path.resolve(__dirname, 'public'))); app.post('/post-feedback', function (req, res) { dbConn.then(function(db) { delete req.body._id; // for safety reasons db.collection('feedbacks').insertOne(req.body); }); res.send('Data received:\n' + JSON.stringify(req.body)); }); app.listen(process.env.PORT || 3000, process.env.IP || '0.0.0.0' );
4. Thêm trình xử lý để xem dữ liệu
Mã cuối cùng của chúng tôi sẽ trông như thế này
var express = require('express'); var path = require('path'); var bodyParser = require('body-parser'); var mongodb = require('mongodb'); var dbConn = mongodb.MongoClient.connect('mongodb://localhost:27017'); var app = express(); app.use(bodyParser.urlencoded({ extended: false })); app.use(express.static(path.resolve(__dirname, 'public'))); app.post('/post-feedback', function (req, res) { dbConn.then(function(db) { delete req.body._id; // for safety reasons db.collection('feedbacks').insertOne(req.body); }); res.send('Data received:\n' + JSON.stringify(req.body)); }); app.get('/view-feedbacks', function(req, res) { dbConn.then(function(db) { db.collection('feedbacks').find({}).toArray().then(function(feedbacks) { res.status(200).json(feedbacks); }); }); }); app.listen(process.env.PORT || 3000, process.env.IP || '0.0.0.0' );
Từ cuối cùng
Hướng dẫn này được tạo dưới dạng bản demo tối thiểu có thể để hiển thị khái niệm gửi biểu mẫu đến máy chủ và lưu nó vào MongoDB. Nó không dành cho sử dụng sản xuất vì nó không xử lý lỗi và chưa triển khai bảo mật