MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Създавайте, четете, актуализирайте, изтривайте данни с помощта на Node.js - Mongoose

В тази статия имаме магазин и ще запазим неговите неща в базата данни за използване на CRUD процес.
ако имате нужда от източника на моя код, не се колебайте да проверите моя GitHub връзка тук

Първо, трябва да инсталираме пакета mongoose в приложението с терминала, като използваме следния код:

npm install mongoose

След това стартираме сървъра чрез express и създаваме файла на нашия модел и пишем командите, както следва:

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

След това във файла на контролера записваме поетапно кода на моя CRUD. Струва си да се спомене, че с помощта на template-engine EJS намираме достъп до предния край и обменяме необходимите данни за импортиране и четене чрез URL.
В началото на файла на контролера изискваме нашия предварително дефиниран модел в Продукта променлива, за да може да комуникира с базата данни във всички функции. Трябва да се отбележи, че изписването с главни букви в променливи, които съдържат модели, е често срещано явление сред уеб разработчиците, но не е задължително.

Създаване:

за запазване на данни в базата данни, първо трябва да запишем получените данни в променливата. След това дефинираме променлива с име productData и с помощта на new команда импортираме получените данни в нашия модел (Продукт). След това използваме Async/Await обещавам да напишем команда за запазване за съхраняване на нашите данни.

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

Когато запазваме данни в модела, първите променливи са имената на нашите полета, които създаваме в нашия модел в първите стъпки, а вторите променливи са нашите получени данни, ако и двете променливи имат едно и също име, можем да напишем името на променливата просто един път както по-долу:

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

Прочетете:

За извличане на нашите данни от базата данни бихме могли да използваме find команда върху променливата на модела, както следва:

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

За четене на специализирано поле от нашата база данни можем да използваме select() команда за извличане на нашите данни. Както в примера по-долу, ние прочетохме само името и цената на всеки продукт:

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

Актуализация:

За да актуализираме, първо, подобно на създаване, поставяме нашите данни в променливите, след което използвайки идентификатора, който получихме, който показва кой продукт искаме да актуализираме, търсим в базата данни и извършваме операцията за актуализиране. За тази стъпка използваме findByIdAndUpdate() команда, в която в началото въвеждаме получения ми идентификатор, след това записваме всички данни за актуализиране.

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

Изтриване:

В този раздел първо поставяме получения идентификатор в productId променлива, след това с findByIdAnRemove() команда намираме и премахваме продукта.

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

В тази статия се опитахме да опишем CRUD работа с NodeJS и MongoDB без да навлизаме в подробности, като например валидирането на входните данни.
Надявам се тази статия да ви е била полезна и в случай, че имате въпроси, не се колебайте и се свържете с мен.

На Ваше разположение,
Сасан Дехганян


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Производителност на MongoDB - има множество бази данни

  2. (MongoDB Java) $push в масив

  3. MongoDB $mul

  4. Извличане на стойност от MongoDB по нейното ключово име

  5. Бърз начин за намиране на дубликати в индексирана колона в mongodb