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