Lưu trữ html trong mongodb

Sau khi hoàn thành việc cài đặt mô-đun do bạn tạo cho mình một thư mục src, thư mục này được sử dụng để chứa tất cả các tệp trong quá trình dự án mã của mình

Lưu trữ html trong mongodb

Lưu ý. Mình khuyến khích các bạn nên tạo thêm folder controllers và file để chứa các logic khi mình code nha. Do mình code để làm demo cho mọi người nên mình viết chung vào các route luôn

Bắt Đầu Code Thôi Nào

Thiết Lập Máy Chủ Web

Trong thư mục gốc bạn tạo cho mình tệp

router.get('/', (req, res, next) => {
   res.send('Hello Everyone')
})
8, tệp này là tệp chính được sử dụng để điều khiển mọi hoạt động chính của máy chủ.
Trong tệp này, các bạn cần nhập và bật trang chủ bộ định tuyến, tác giả và sách vào nha.
Và cũng khai báo và bật luôn method-override và body-parser vào luôn nha.

const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})

Trong thư mục các tuyến có tệp

router.get('/', (req, res, next) => {
   res.send('Hello Everyone')
})
9, các bạn tạo cho nó một trình xử lý tuyến và thử chạy máy chủ xem sau. Mục đích để các bạn test xem server có chạy không nha

router.get('/', (req, res, next) => {
   res.send('Hello Everyone')
})
Lưu trữ html trong mongodb

Cơ Sở Dữ Liệu Thiết Lập

To that can setting been database thì các bạn đăng nhập tài khoản mongodb atlas tại đây nha. Sau khi các bạn đã có tài khoản mongodb atlas, hãy tiếp tục đến phần cài đặt cấu hình để có thể kết nối mongodb atlas với ứng dụng của chúng ta. Để biết thêm chi tiết các bạn xem bước 3 trong bài viết của mình hướng dẫn triển khai project nodejs lên heroku tại đây nha.
Sau đó các bạn copy link database mongodb đã tạo rồi dán vào project của mình là được nha. Các bạn tạo cho mình một tệp

// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
0 bên trong thư mục gốc.
Trong tệp này, bạn tạo một đường dẫn là
// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
1
Trong ứng dụng tệp. js các bạn khai báo module dotenv với module mongoose và tạo đường dẫn mongodb.

// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))

To know it was connect or not you start back server will know nha

Lưu trữ html trong mongodb

Thiết kế Layout Cho Project

Trong phần cấu trúc thư mục có các lượt xem thư mục trong đó bạn tạo cho mình 2 thư mục

// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
2 bao gồm tệp
// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
3 và
// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
4 bao gồm tệp
// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
5. Hai thư mục này sẽ là nơi chứa bố cục cục bộ của ứng dụng.
phần/tiêu đề. pug

const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
1

bố cục/bố cục. pug
Trong này bạn chỉ cần đưa tiêu đề và liên kết các liên kết bootstrap vào nha

const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
2

Chức Năng Hiển Thị Và Tạo Mới Tác giả

Định Nghĩa Router Tạo Mới Trong Author

Trong thư mục route có file

// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
6 thì trong này sẽ là nơi chứa toàn bộ các nguồn liên quan đến tác giả.
Trước tiên bạn tạo cho mình hai bộ định tuyến tạo mới đó là
// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
7 và
// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
8 trước nha. Các bạn chỉ cần tạo và hiển thị lượt xem trước khi cho mình được.

const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
6

Giao Diện Tạo Mới Trong Tác giả

Trong

// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
9 bạn tạo cho mình thư mục là
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
10 sẽ bao gồm 4 tệp
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
11,
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
12,
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
13,
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
14.
Trước tiên các bạn nhớ mở rộng bố cục vào nha
authors/new. pug

router.get('/', (req, res, next) => {
   res.send('Hello Everyone')
})
3

Và đây là giao diện căn bản để tạo tác giả

Lưu trữ html trong mongodb

Định Nghĩa Các Schema Tác giả Cho Mongoose

Như các bạn đã đọc ở trên thì cấu trúc thư mục cho dự án bên trong thư mục

const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
15 các bạn tạo mô hình cho thư mục của mình, bên trong các mô hình thư mục các bạn tạo cho mình tệp
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
16.
Trong tệp
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
16 cần tạo một cuốn sách đối tượng và sẽ chứa các trường tên tác giả.

router.get('/', (req, res, next) => {
   res.send('Hello Everyone')
})
7

Tham số thứ nhất là tên riêng cho bộ sưu tập sắp được tạo ra cho mô hình của bạn, và tham số thứ hai là lược đồ mà bạn muốn sử dụng để tạo mô hình

Controller Tạo Mới Trong Author

Cũng trong tệp

const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
18 ta có bộ định tuyến. bưu kiện('/',. ) used to create author. Các bạn nhớ yêu cầu model của tác giả mà mình đã tạo vào nha

Kiểm tra tên của tác giả khi được tạo
Ta sẽ kiểm tra xem tên được tạo có trùng với tên mà tác giả đã tạo từ trước hay không nếu trùng thì sẽ hiển thị thông báo.
bởi vì tên tác giả của một cuốn sách nào đó thì rất lạ khi trùng có thể nói là không bao giờ có tên tác giả giống, còn tên người mà trùng nhau là chuyện bình thường. Vì thế ta cần phải kiểm tra tên của tác giả

Nó sẽ tạo ra một đối tượng rộng chứa dữ liệu tác giả được truyền vào. Sau đó lưu dữ liệu vào cơ sở dữ liệu đã khởi động. Chúng ta sử dụng try{} catch{} nên khi có lỗi thì sẽ hiển thị lỗi khi tạo tác giả

router.get('/', (req, res, next) => {
   res.send('Hello Everyone')
})
9

Khi mình tạo tác giả thành công thì lưu vào DB và chuyển hướng sang trang tác giả, bây giờ trong

const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
19 các bạn res. gửi tin nhắn gì đó khi tạo tác giả thành công

router.get('/', (req, res, next) => {
   res.send('Hello Everyone')
})
1

If that has an error whenTạo tác giả thì trong tác giả/mới. pug các bạn thêm dòng code ở dưới vào phía sau thẻ h2 Tác giả mới là được nha

router.get('/', (req, res, next) => {
   res.send('Hello Everyone')
})
0

Và đây là kết quả khi chúng ta tạo tác giả nha

Lưu trữ html trong mongodb

Định Nghĩa Và Controller Router Hiển Thị Trọng Tác giả

Trong thư mục route có file

// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
6 thì trong này sẽ là nơi chứa toàn bộ mã nguồn liên quan đến tác giả.
The ta create router. get('/') here main are router of the pages pages, target of this page is seek search and Shows author.

Trước tiên các bạn viết cho mình hàm try{}catch{}, trong try{} là nơi mà ta sẽ tìm Tác giả trong DB và kết xuất ra tác giả còn bắt{} sẽ chuyển hướng sang trang chủ nếu có lỗi .
Còn về vấn đề tìm kiếm thì mình sẽ sử dụng

const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
21 để truy vấn dữ liệu kết hợp với RegExp.
RegExp là một chuỗi các ký tự được tạo thành một mẫu tìm kiếm. Mẫu tìm kiếm có thể được sử dụng cho các hoạt động tìm kiếm văn bản và thay thế văn bản.

Mình sẽ giải thích sơ lược về cách hoạt động của chức năng tìm kiếm. Tạo một đối tượng trống là nơi chứa các cặp khóa và giá trị, khóa ở đây là tên và giá trị là biểu thức chính quy vd. {Tên. /dài/tôi}.
Toán tử && sẽ trả về true khi tất cả các hạng hạng đều là true có nghĩa là mình search có tên tác giả thì điều kiện nó là true.

router.get('/', (req, res, next) => {
   res.send('Hello Everyone')
})
1

Giao Diện Hiển Thị Trọng Tác giả

Trong

// Khai báo dotenv
require('dotenv').config()

// Khai báo mongoose
var mongoose = require('mongoose')

// Connect database
 mongoose.connect(process.env.DATABASE_URL,{useUnifiedTopology: true,
   useNewUrlParser: true, })
 const db = mongoose.connection
  db.on('error', error => console.error(error))
  db.once('open', () => console.log('Connected to Database'))
9 bạn tạo cho mình thư mục là
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
10 sẽ bao gồm 4 tệp
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
11,
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
12,
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
13,
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
14.
Trước tiên các bạn nhớ mở rộng bố cục vào nha và lặp qua các tác giả để hiển thị tên của tác giả. Create a form to make a search for author with method="Get" nha.
______128 this is a object do mình đã định nghĩa là
const express = require("express")
const app = express()
const bodyParser = require('body-parser')
const methodOverride = require('method-override')
const port = 4444

// Import routes
const IndexRouter = require("../src/routes/index.routes")
const BookRouter = require("../src/routes/books.routes")
const AuthorRouter = require("../src/routes/author.routes")

// view engine setup
app.set('view engine', 'pug');
app.set('views', 'src/views');

// Enable Static file
app.use(express.static('src/public'))

// Enable Method Override
app.use(methodOverride('_method'));

// Enable Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit:'10mb' ,extended: false }));  

// Enable Routes
app.use('/', IndexRouter)
app.use('/books', BookRouter)
app.use('/authors', AuthorRouter)

app.listen(port, () => {
    console.log(`Server listening ${port}`)
})
21 ở trên giờ muốn lấy giá trị thì ta cần. name to could get get value of them.
tác giả/chỉ mục. pug

router.get('/', (req, res, next) => {
   res.send('Hello Everyone')
})
2

Lưu ý. Mình đã cập nhật lại code tại một số chỗ nên khi bạn thấy trên ảnh gif sẽ không được chính xác cho lắm nha.
Và đây là kết quả khi chúng tôi hiển thị và tìm kiếm tác giả nha.

Lưu trữ html trong mongodb

Sau đây là hết phần 1 rồi nha mời các bạn xem tiếp phần 2
Còn tiếp.

Lời Kết

Vậy Là Xong bài Hướng Dẫn Xây Dựng Books Store Với NodeJS, Express và MongoDB - Phần 1 rồi nhé. Các bạn xem phần tiếp theo nhà mình chia thành nhiều phần ra để các bạn có thể đọc và làm một cách dễ dàng hơn, dễ hiểu hơn.