Neste artigo, temos uma loja e vamos salvar seu material no banco de dados para uso do CRUD processo.
se você precisar da fonte do meu código, sinta-se à vontade para verificar meu GitHub link aqui
Primeiramente, devemos instalar o pacote mangusto no aplicativo com o terminal usando o seguinte código:
npm install mongoose
Em seguida, executamos o servidor através do express e criamos o arquivo do nosso modelo e escrevemos os comandos conforme abaixo:
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);
Depois disso, no arquivo do controlador, escrevemos o código do meu CRUD estágio por estágio. Vale a pena mencionar que, usando o EJS do mecanismo de modelo encontramos acesso à seção front-end e trocamos os dados necessários para importação e leitura através de URL.
No início do arquivo do controlador, exigimos nosso modelo predefinido no Produto variável para poder se comunicar com o banco de dados em todas as funções. Deve-se notar que a capitalização em variáveis que contêm modelos é comum entre desenvolvedores web, mas não é obrigatória.
Criar:
para salvar os dados no banco de dados, primeiro devemos salvar os dados recebidos na variável. Em seguida, definimos uma variável chamada productData e usando o
new
comando importamos nossos dados recebidos em nosso modelo (Produto). Depois disso, usamos Async/Await
prometa escrever um comando de salvamento para armazenar nossos dados. 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);
}
};
Quando estamos salvando dados no modelo, as primeiras variáveis são nossos nomes de campo que criamos em nosso modelo nas primeiras etapas, e as segundas variáveis são nossos dados recebidos se ambas as variáveis tiverem o mesmo nome, podemos escrever o nome da variável apenas uma vez como abaixo:
const productData = new Product({
title,
price,
description,
imageUrl
});
Ler:
Para buscar nossos dados do banco de dados, podemos usar o
find
comando na variável do modelo como abaixo: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);
}
};
Para ler um campo especializado do nosso banco de dados, podemos usar o
select()
comando para buscar nossos dados. Como no exemplo abaixo, lemos apenas o nome e o preço de cada produto:Const products = await Product.find.select(‘title price’)
Atualização:
Para atualizar, primeiro, como criar, colocamos nossos dados nas variáveis, depois usando o ID que recebemos, que indica qual produto queremos atualizar, pesquisamos no banco de dados e realizamos a operação de atualização. Para esta etapa, usamos o
findByIdAndUpdate()
comando, no qual no início inserimos meu ID recebido em seguida, escrevemos todos os dados para atualizar. 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)
}
};
Excluir:
Nesta seção, primeiro colocamos meu ID recebido no productId variável, então com a
findByIdAnRemove()
comando encontramos e removemos o produto. 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)
}
};
Neste artigo, tentamos descrever o CRUD operação com NodeJS e MongoDB sem entrar em detalhes, como a validação dos dados de entrada.
Espero que este artigo tenha sido útil para você e, caso tenha alguma dúvida, não hesite e entre em contato comigo.
Sinceramente,
Sasan Dehghanian