In questo articolo, abbiamo un negozio e salveremo la sua roba nel database per l'uso del CRUD processi.
se hai bisogno del codice sorgente del mio codice puoi controllare il mio GitHub link qui
Per prima cosa, dovremmo installare il pacchetto mongoose nell'applicazione con il terminale utilizzando il seguente codice:
npm install mongoose
Quindi, eseguiamo il server tramite express e creiamo il file del nostro modello e scriviamo i comandi come di seguito:
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);
Dopodiché, nel file del controller, scriviamo passo dopo passo il codice del mio CRUD. Vale la pena ricordare che utilizzando EJS template-engine troviamo l'accesso alla sezione front-end e ci scambiamo i dati richiesti per l'importazione e la lettura tramite URL.
All'inizio del file del controller, richiediamo il nostro modello predefinito nel Prodotto variabile per poter comunicare con il database in tutte le funzioni. Va notato che la capitalizzazione in variabili che contengono modelli è comune tra gli sviluppatori web, tuttavia non è obbligatoria.
Crea:
per il salvataggio dei dati nel database, per prima cosa, dovremmo salvare i dati ricevuti nella variabile. Successivamente, definiamo una variabile denominata productData e utilizzando il new
comando importiamo i nostri dati ricevuti nel nostro modello (Prodotto). Successivamente, utilizziamo Async/Await
promettiamo di scrivere un comando di salvataggio per memorizzare i nostri dati.
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);
}
};
Quando salviamo i dati nel modello, le prime variabili sono i nostri nomi di campo che creiamo nel nostro modello nei primi passaggi, e le seconde variabili sono i nostri dati ricevuti se entrambe le variabili hanno lo stesso nome, possiamo scrivere il nome della variabile semplicemente una volta come di seguito:
const productData = new Product({
title,
price,
description,
imageUrl
});
Leggi:
Per recuperare i nostri dati dal database potremmo usare il find
comando sulla variabile del modello come di seguito:
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);
}
};
Per leggere un campo specializzato dal nostro database potremmo usare il select()
comando per recuperare i nostri dati. Come nell'esempio seguente, abbiamo letto solo il nome e il prezzo di ogni prodotto:
Const products = await Product.find.select(‘title price’)
Aggiornamento:
Per aggiornare, prima, come per creare, mettiamo i nostri dati nelle variabili, quindi utilizzando l'ID che abbiamo ricevuto, che indica quale prodotto vogliamo aggiornare, cerchiamo nel database ed eseguiamo l'operazione di aggiornamento. Per questo passaggio, utilizziamo il findByIdAndUpdate()
comando, in cui all'inizio inseriamo il mio ID ricevuto, quindi scriviamo tutti i dati da aggiornare.
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)
}
};
Elimina:
In questa sezione, per prima cosa inseriamo il mio ID ricevuto in productId variabile, quindi con findByIdAnRemove()
comando troviamo e rimuoviamo il prodotto.
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 questo articolo, abbiamo cercato di descrivere il CRUD operazione con NodeJS e MongoDB senza entrare nei dettagli, come la convalida dei dati di ingresso.
Spero che questo articolo ti sia stato utile e, in caso di domande, non esitare e contattami.
Cordiali saluti,
Sasan Dehghanian