Trong bài viết này, chúng tôi có một cửa hàng và chúng tôi sẽ lưu nội dung của nó trong cơ sở dữ liệu để sử dụng CRUD tiến trình.
nếu bạn cần nguồn mã của tôi, bạn có thể kiểm tra GitHub của tôi liên kết tại đây
Lúc đầu, chúng ta nên cài đặt gói mongoose trong ứng dụng với thiết bị đầu cuối bằng cách sử dụng mã sau:
npm install mongoose
Sau đó, chúng tôi chạy máy chủ thông qua express và tạo tệp mô hình của chúng tôi và viết các lệnh như bên dưới:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const productSchema = new Schema({
title: {
type: String,
required: true
},
price: {
type: Number,
required: true
},
description: {
type: String,
required: true
},
imageUrl: {
type: String,
required: true
}
});
module.exports = mongoose.model('Product',productSchema);
Sau đó, trong tệp của trình điều khiển, chúng tôi viết mã CRUD của tôi theo từng giai đoạn. Điều đáng nói là bằng cách sử dụng template-engine EJS chúng tôi tìm thấy quyền truy cập vào phần giao diện người dùng và trao đổi dữ liệu cần thiết để nhập và đọc qua URL.
Ở phần đầu của tệp trình điều khiển, chúng tôi yêu cầu mô hình được xác định trước của chúng tôi trong Sản phẩm biến để có thể giao tiếp với cơ sở dữ liệu trong tất cả các chức năng. Cần lưu ý rằng việc viết hoa trong các biến có chứa mô hình là điều phổ biến giữa các nhà phát triển web tuy nhiên nó không phải là bắt buộc.
Tạo:
để lưu dữ liệu trong cơ sở dữ liệu, trước tiên, chúng ta nên lưu dữ liệu đã nhận vào biến. Tiếp theo, chúng tôi xác định một biến có tên productData và bằng cách sử dụng new
lệnh chúng tôi nhập dữ liệu đã nhận vào mô hình của chúng tôi (Sản phẩm). Sau đó, chúng tôi sử dụng Async/Await
hứa sẽ viết một lệnh lưu để lưu trữ dữ liệu của chúng tôi.
exports.postAddProduct = async (req, res, next) => {
const title = req.body.title;
const imageUrl = req.body.imageUrl;
const price = req.body.price;
const description = req.body.description;
const productData = new Product({
title: title,
price: price,
description: description,
imageUrl: imageUrl
});
try {
const result = await productData.save();
res.redirect("/admin/products");
} catch (err){
console.log(err);
}
};
Khi chúng tôi đang lưu dữ liệu trong mô hình, các biến đầu tiên là tên trường mà chúng tôi tạo trong mô hình của mình ở các bước đầu tiên và các biến thứ hai là dữ liệu nhận được của chúng tôi nếu cả hai biến có cùng tên, chúng tôi có thể viết tên biến đó. một lần như sau:
const productData = new Product({
title,
price,
description,
imageUrl
});
Đọc:
Để tìm nạp dữ liệu của chúng tôi từ cơ sở dữ liệu, chúng tôi có thể sử dụng find
trên biến của mô hình như sau:
exports.getAdminProducts = async (req, res, next) => {
try {
const products = await Product.find()
res.render("admin/products", {
pageTitle: "Admin Products",
products: products,
path: "/admin/products",
});
} catch (err) {
console.log(err);
}
};
Để đọc một lĩnh vực chuyên ngành từ cơ sở dữ liệu của chúng tôi, chúng tôi có thể sử dụng select()
lệnh để tìm nạp dữ liệu của chúng tôi. Như trong ví dụ dưới đây, chúng tôi chỉ đọc tên và giá của từng sản phẩm:
Const products = await Product.find.select(‘title price’)
Cập nhật:
Để cập nhật, trước tiên, giống như tạo, chúng tôi đặt dữ liệu của mình vào các biến, sau đó sử dụng ID mà chúng tôi nhận được, cho biết sản phẩm nào chúng tôi muốn cập nhật, chúng tôi tìm kiếm trong cơ sở dữ liệu và thực hiện thao tác cập nhật. Đối với bước này, chúng tôi sử dụng findByIdAndUpdate()
lệnh, trong đó lúc đầu chúng ta nhập ID nhận được của mình, tiếp theo chúng ta ghi toàn bộ dữ liệu để cập nhật.
exports.postEditProduct = async (req, res, next) => {
const productId = req.body.productId;
const updatedTitle = req.body.title;
const updatedPrice = req.body.price;
const updatedImageUrl = req.body.imageUrl;
const updatedDesc = req.body.description;
try {
await Product.findByIdAndUpdate(productId, {
title: updatedTitle,
price: updatedPrice,
description: updatedDesc,
imageUrl: updatedImageUrl
});
res.redirect("/admin/products");
} catch (err) {
console.log(err)
}
};
Xóa:
Trong phần này, trước tiên, chúng tôi đặt Id nhận được của tôi trong productId , sau đó với findByIdAnRemove()
lệnh chúng tôi tìm và xóa sản phẩm.
exports.postDeleteProduct = async (req, res, next) => {
const productId = req.body.productId;
try {
await Product.findByIdAndRemove(productId);
res.redirect("/admin/products");
} catch (err) {
console.log(err)
}
};
Trong bài viết này, chúng tôi đã cố gắng mô tả CRUD hoạt động với NodeJS và MongoDB mà không đi vào chi tiết, chẳng hạn như xác thực dữ liệu nhập.
Tôi hy vọng bài viết này hữu ích cho bạn và trong trường hợp bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với tôi.
Trân trọng,
Sasan Dehghanian