MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Tworzenie, odczytywanie, aktualizowanie i usuwanie danych przy użyciu Node.js — Mongoose

W tym artykule mamy sklep i zamierzamy zapisać jego rzeczy w bazie danych na użytek CRUD proces.
jeśli potrzebujesz źródła mojego kodu, możesz sprawdzić mój GitHub link tutaj

W pierwszej kolejności powinniśmy zainstalować pakiet mangusta w aplikacji wraz z terminalem za pomocą następującego kodu :

npm install mongoose

Następnie uruchamiamy serwer przez express i tworzymy plik naszego modelu i piszemy polecenia jak poniżej:

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

Następnie, w pliku kontrolera, krok po kroku piszemy kod mojego CRUDa. Warto wspomnieć, że używając szablonu EJS znajdujemy dostęp do sekcji front-endu i wymieniamy wymagane dane do importu i odczytu przez URL.
Na początku pliku kontrolera wymagamy naszego wstępnie zdefiniowanego modelu w Produkcie zmienna umożliwiająca komunikację z bazą danych we wszystkich funkcjach. Należy zauważyć, że pisanie wielkimi literami w zmiennych zawierających modele jest powszechne wśród twórców stron internetowych, jednak nie jest obowiązkowe.

Utwórz:

w celu zapisania danych w bazie danych należy w pierwszej kolejności zapisać otrzymane dane w zmiennej. Następnie definiujemy zmienną o nazwie productData i używając new polecenie importujemy otrzymane dane do naszego modelu (Produkt). Następnie używamy Async/Await obiecuję napisać polecenie zapisu do przechowywania naszych danych.

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

Gdy zapisujemy dane w modelu, pierwsze zmienne to nasze nazwy pól, które tworzymy w naszym modelu w pierwszych krokach, a drugie zmienne to nasze otrzymane dane jeśli obie zmienne mają taką samą nazwę, możemy po prostu wpisać nazwę zmiennej jeden raz, jak poniżej:

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

Czytaj:

Do pobrania naszych danych z bazy danych możemy użyć find polecenie na zmiennej modelu jak poniżej:

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

Do odczytania wyspecjalizowanego pola z naszej bazy danych możemy użyć select() polecenie, aby pobrać nasze dane. Jak w poniższym przykładzie, przeczytaliśmy tylko nazwę i cenę każdego produktu:

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

Aktualizacja:

W celu aktualizacji najpierw, podobnie jak przy tworzeniu, umieszczamy swoje dane w zmiennych, a następnie korzystając z otrzymanego ID, które wskazuje, który produkt chcemy zaktualizować, przeszukujemy bazę danych i wykonujemy operację aktualizacji. W tym kroku używamy findByIdAndUpdate() polecenie, w którym na początku wpisujemy otrzymane ID, a następnie zapisujemy całe dane do aktualizacji.

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

Usuń:

W tej sekcji najpierw umieściliśmy mój otrzymany identyfikator w productId zmienną, a następnie z findByIdAnRemove() polecenie znajdujemy i usuwamy 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)
  }  
};

W tym artykule staraliśmy się opisać CRUD działanie z NodeJS i MongoDB bez wchodzenia w szczegóły, takie jak walidacja danych wejściowych.
Mam nadzieję, że ten artykuł był dla Ciebie pomocny, a jeśli masz jakiekolwiek pytania, nie wahaj się i skontaktuj się ze mną.

Z poważaniem,
Sasan Dehghanian


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wykonywanie case-statement w ramach agregacji mongodb

  2. Hasło MongoDB z @ w nim

  3. Pierwsze kroki z PHP i MongoDB

  4. Operatory agregacji MongoDB dla zwracających części dat

  5. MongoDB — Rozwiń tablicę za pomocą agregacji i usuń duplikaty