sql >> Database >  >> NoSQL >> MongoDB

Gegevens maken, lezen, bijwerken en verwijderen met Node.js - Mongoose

In dit artikel hebben we een winkel en we gaan zijn spullen in de database opslaan voor het gebruik van de CRUD Verwerken.
als je de broncode van mijn code nodig hebt, kijk dan gerust op mijn GitHub link hier

Eerst moeten we het mangoestpakket in de applicatie met de terminal installeren door de volgende code te gebruiken:

npm install mongoose

Vervolgens laten we de server door express lopen en maken we het bestand van ons model en schrijven we de onderstaande opdrachten:

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);

Daarna schrijven we in het bestand van de controller stap voor stap de code van mijn CRUD. Het is vermeldenswaard dat door gebruik te maken van template-engine EJS we vinden toegang tot het front-end gedeelte en wisselen de benodigde gegevens uit voor het importeren en lezen via URL.
Aan het begin van het controllerbestand hebben we ons vooraf gedefinieerde model nodig in het Product variabele om in alle functies met de database te kunnen communiceren. Opgemerkt moet worden dat hoofdlettergebruik in variabelen die modellen bevatten gebruikelijk is onder webontwikkelaars, maar het is niet verplicht.

Maken:

voor het opslaan van gegevens in de database moeten we eerst de ontvangen gegevens in de variabele opslaan. Vervolgens definiëren we een variabele met de naam productData en gebruiken we de new commando importeren we onze ontvangen gegevens in ons model (Product). Daarna gebruiken we Async/Await beloof een besparingsopdracht te schrijven om onze gegevens op te slaan.

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);
  }
};

Wanneer we gegevens in het model opslaan, zijn de eerste variabelen onze veldnamen die we in de eerste stappen in ons model maken, en de tweede variabelen zijn onze ontvangen gegevens. Als beide variabelen dezelfde naam hebben, kunnen we de naam van de variabele gewoon schrijven een keer zoals hieronder:

const productData = new Product({
    title,
    price,
    description,
    imageUrl
  });

Lees:

Voor het ophalen van onze gegevens uit de database kunnen we de find . gebruiken commando op de variabele van het model zoals hieronder:

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);
  }
};

Voor het lezen van een gespecialiseerd veld uit onze database kunnen we de select() . gebruiken opdracht om onze gegevens op te halen. Zoals in het onderstaande voorbeeld, hebben we alleen de naam en prijs van elk product gelezen:

Const products = await Product.find.select(‘title price’)

Bijwerken:

Om te updaten, zoals creëren, plaatsen we eerst onze gegevens in de variabelen, gebruiken we de ID die we hebben ontvangen, die aangeeft welk product we willen updaten, zoeken we in de database en voeren we de update-bewerking uit. Voor deze stap gebruiken we de findByIdAndUpdate() commando, waarin we in het begin mijn ontvangen ID invoeren en vervolgens de hele gegevens schrijven om bij te werken.

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)
  }
};

Verwijderen:

In deze sectie plaatsen we eerst mijn ontvangen id in de productId variabele, dan met de findByIdAnRemove() commando vinden en verwijderen we het product.

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)
  }  
};

In dit artikel hebben we geprobeerd de CRUD . te beschrijven bewerking met NodeJS en MongoDB zonder in details te treden, zoals de validatie van invoergegevens.
Ik hoop dat dit artikel nuttig voor je was, en als je vragen hebt, aarzel dan niet en neem contact met me op.

Eerlijk,
Sasan Dehghanian


  1. Node.js, Socket.io, Redis pub/sub hoog volume, lage latentieproblemen

  2. Variabelen gebruiken in MongoDB Map-reduce map-functie

  3. Rate-Limit een API (lente MVC)

  4. Mongo update array-element (.NET driver 2.0)