sql >> Database teknologi >  >> NoSQL >> MongoDB

Opret, læs, opdater, slet data ved at bruge Node.js - Mongoose

I denne artikel har vi en butik, og vi vil gemme dens ting i databasen til brug af CRUD behandle.
Hvis du har brug for kilden til min kode, er du velkommen til at tjekke min GitHub link her

Først bør vi installere mongoose-pakken i applikationen med terminalen ved at bruge følgende kode:

npm install mongoose

Derefter kører vi serveren gennem express og opretter vores models fil og skriver kommandoerne som nedenfor:

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

Derefter, i controllerens fil, skriver vi min CRUDs kode trin for trin. Det er værd at nævne, at ved at bruge skabelon-motor EJS vi finder adgang til frontend-sektionen og udveksler de nødvendige data til import og gennemlæsning af URL.
I begyndelsen af ​​controllerfilen kræver vi vores foruddefinerede model i Produktet variabel for at kunne kommunikere med databasen i alle funktionerne. Det skal bemærkes, at brug af store bogstaver i variabler, der indeholder modeller, er almindelig blandt webudviklere, men det er ikke obligatorisk.

Opret:

for datalagring i databasen skal vi først gemme de modtagne data i variablen. Dernæst definerer vi en variabel ved navn productData, og ved at bruge new kommando importerer vi vores modtagne data til vores model (Produkt). Derefter bruger vi Async/Await lover at skrive en gemmekommando for at gemme vores data.

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

Når vi gemmer data i modellen, er de første variable vores feltnavne, som vi opretter i vores model i de første trin, og de andre variabler er vores modtagne data, hvis begge variabler har samme navn, kan vi skrive variablens navn bare en gang som nedenfor:

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

Læs:

Til at hente vores data fra databasen kunne vi bruge find kommando på modellens variabel som nedenfor:

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

For at læse et specialiseret felt fra vores database kunne vi bruge select() kommando for at hente vores data. Som i eksemplet nedenfor har vi kun læst navnet og prisen på hvert produkt:

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

Opdatering:

For at opdatere, først, ligesom at oprette, sætter vi vores data i variablerne, og derefter bruger vi det ID, vi modtog, som angiver, hvilket produkt vi vil opdatere, søger vi i databasen og udfører opdateringsoperationen. Til dette trin bruger vi findByIdAndUpdate() kommando, hvor vi i begyndelsen indtaster mit modtagne ID derefter skriver vi hele data for at opdatere.

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

Slet:

I dette afsnit sætter vi først mit modtagne id i productId variabel og derefter med findByIdAnRemove() kommando finder vi og fjerner produktet.

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

I denne artikel forsøgte vi at beskrive CRUD drift med NodeJS og MongoDB uden at gå i detaljer, såsom validering af indtastningsdata.
Jeg håber, at denne artikel var nyttig for dig, og hvis du har spørgsmål, så tøv ikke med at kontakte mig.

Med venlig hilsen
Sasan Dehghanian


  1. E11000 duplikatnøglefejlindeks i mongodb mongoose

  2. Sådan implementeres Percona Server til MongoDB for høj tilgængelighed

  3. MongoDB dropIndex()

  4. for mange åbne filer i mgo go server