MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Crie, leia, atualize, exclua dados usando Node.js - Mongoose


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