sql >> Databáze >  >> NoSQL >> MongoDB

Vytvářejte, čtěte, aktualizujte, mažte data pomocí Node.js - Mongoose

V tomto článku máme obchod a jeho věci uložíme do databáze pro použití CRUD proces.
pokud potřebujete zdroj mého kódu, neváhejte se podívat na můj GitHub odkaz zde

Nejprve bychom měli nainstalovat balíček mongoose do aplikace s terminálem pomocí následujícího kódu:

npm install mongoose

Poté spustíme server přes express a vytvoříme soubor našeho modelu a zapíšeme příkazy, jak je uvedeno níže:

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

Poté do souboru ovladače zapíšeme kód mého CRUD krok po kroku. Stojí za zmínku, že pomocí template-engine EJS najdeme přístup do front-end sekce a vyměníme požadovaná data pro import a čtení URL.
Na začátku souboru ovladače požadujeme náš předdefinovaný model v Produktu aby bylo možné komunikovat s databází ve všech funkcích. Je třeba poznamenat, že velká písmena v proměnných, které obsahují modely, je mezi webovými vývojáři běžná, ale není povinná.

Vytvořit:

pro uložení dat do databáze bychom měli přijatá data nejprve uložit do proměnné. Dále definujeme proměnnou s názvem productData a pomocí new importujeme přijatá data do našeho modelu (Produktu). Poté používáme Async/Await slib, že napíšeme příkaz k uložení našich dat.

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

Když ukládáme data do modelu, první proměnné jsou názvy našich polí, které vytvoříme v našem modelu v prvních krocích, a druhé proměnné jsou naše přijatá data, pokud mají obě proměnné stejný název, můžeme napsat název proměnné jen jednou, jak je uvedeno níže:

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

Přečtěte si:

Pro získání našich dat z databáze můžeme použít find příkaz na proměnné modelu, jak je uvedeno níže:

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

Pro čtení specializovaného pole z naší databáze bychom mohli použít select() příkaz k načtení našich dat. Stejně jako v příkladu níže jsme přečetli pouze název a cenu každého produktu:

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

Aktualizace:

Abychom aktualizovali, nejprve, jako je vytváření, vložíme naše data do proměnných, poté pomocí ID, které jsme obdrželi, které označuje, který produkt chceme aktualizovat, vyhledáme v databázi a provedeme operaci aktualizace. K tomuto kroku používáme findByIdAndUpdate() příkaz, do kterého na začátku zadáme moje přijaté ID, dále zapíšeme celá data k aktualizaci.

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

Smazat:

V této sekci nejprve vložíme mé přijaté ID do productId a poté pomocí findByIdAnRemove() příkaz najdeme a odstraníme produkt.

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

V tomto článku jsme se pokusili popsat CRUD provoz s NodeJS a MongoDB aniž bychom zacházeli do podrobností, jako je validace vstupních údajů.
Doufám, že tento článek byl pro vás užitečný a v případě jakýchkoli dotazů mě neváhejte kontaktovat.

S pozdravem,
Sasan Dehghanian


  1. Jak mohu vypsat všechny kolekce v prostředí MongoDB?

  2. Mongodb agregační kanál, jak omezit skupinový push

  3. Zkopírujte/klonujte sbírku v MongoDB

  4. Vlastní uživatelské připojovací řetězce pro instance MongoDB s ověřováním