تعتبر عمليات CRUD - الإنشاء والقراءة والتحديث والحذف - أساسية لأي تطبيق يتطلب إدارة البيانات. من المهم للمطورين أن يفهموا هذه العمليات، لأنها توفر الوظائف الأساسية التي نحتاجها للتفاعل مع قواعد البيانات بشكل فعال. في منشور المدونة هذا، سأشرح ما هي عمليات CRUD وكيفية تنفيذها باستخدام مكدس MERN (MongoDB وExpress وReact وNode.js) من خلال عرض كيفية دمجها في تطبيق Yoga Pose Library الخاص بي.
CRUD هو اختصار يرمز إلى:
تشكل هذه العمليات العمود الفقري لمعظم تطبيقات الويب التي تتضمن معالجة البيانات. يتيح تنفيذ عمليات CRUD للمستخدمين التفاعل مع البيانات وإدارتها بشكل فعال.
للبدء في تنفيذ عمليات CRUD، قمت بإعداد قاعدة بيانات MongoDB لتخزين أوضاع اليوغا الخاصة بي. وإليك كيف يمكنك أن تفعل الشيء نفسه:
للاتصال بـ MongoDB، استخدمت Mongoose، وهي مكتبة لنمذجة بيانات الكائنات (ODM) لـ MongoDB وNode.js. إليك كيفية إنشاء الاتصال في ملف server.js الخاص بي:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/yogaPoseLibrary') .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('Error connecting to MongoDB', err));
بعد ذلك، قمت بإنشاء نموذج Mongoose لتمثيل أوضاع اليوغا الخاصة بي. يتيح هذا النموذج التفاعل السهل مع مجموعة MongoDB. في ملفmodels/Pose.js، قمت بتعريف المخطط على النحو التالي:
const mongoose = require('mongoose'); const poseSchema = new mongoose.Schema({ name: { type: String, required: true }, description: { type: String, required: true }, }); module.exports = mongoose.model('Pose', poseSchema);
مع اتصال MongoDB وإعداد النموذج، قمت بتنفيذ عمليات CRUD في خادم Express الخاص بي.
للسماح للمستخدمين بإضافة أوضاع يوغا جديدة، قمت بإنشاء مسار يقبل طلبات POST:
app.post('/api/poses', async (req, res) => { try { const newPose = new Pose(req.body); const savedPose = await newPose.save(); res.status(201).json(savedPose); } catch (err) { res.status(500).json({ error: 'Failed to create pose' }); } });
في هذا المسار، يتم إنشاء وضع جديد باستخدام البيانات المرسلة في نص الطلب وحفظها في قاعدة البيانات.
بالنسبة لعملية القراءة، قمت بإنشاء طريق لاسترداد جميع الأوضاع:
app.get('/api/poses', async (req, res) => { try { const poses = await Pose.find(); res.json(poses); } catch (err) { res.status(500).json({ error: 'Failed to fetch poses' }); } });
يسترد هذا المسار جميع أوضاع اليوغا من قاعدة البيانات ويرسلها مرة أخرى كاستجابة JSON.
للسماح للمستخدمين بتحديث الأوضاع الحالية، قمت بتنفيذ مسار PUT:
app.put('/api/poses/:id', async (req, res) => { try { const updatedPose = await Pose.findByIdAndUpdate(req.params.id, req.body, { new: true }); res.json(updatedPose); } catch (err) { res.status(500).json({ error: 'Failed to update pose' }); } });
يقوم هذا المسار بتحديث وضع معين بناءً على المعرف المقدم وإرجاع الوضع المحدث.
أخيرًا، قمت بتنفيذ عملية الحذف:
app.delete('/api/poses/:id', async (req, res) => { try { await Pose.findByIdAndRemove(req.params.id); res.json({ message: 'Pose deleted' }); } catch (err) { res.status(500).json({ error: 'Failed to delete pose' }); } });
يزيل هذا المسار وضعية من قاعدة البيانات باستخدام معرفها.
بمجرد تنفيذ عمليات CRUD، استخدمت Postman لاختبار كل نقطة نهاية. يضمن هذا الاختبار أن مساراتي تعمل بشكل صحيح وأن البيانات تتم إدارتها كما هو متوقع.
أرسل طلب POST إلى /api/poses بالنص التالي:
{
"name": "المحارب الأول"،
"description": "وضعية الوقوف التي تقوي الساقين والعضلات الأساسية."
أرسل طلب GET إلى /api/poses.
أرسل طلب PUT إلى /api/poses/:id مع البيانات المحدثة.
أرسل طلب حذف إلى /api/poses/:id.
تعد عمليات CRUD ضرورية لأي تطبيق يتضمن إدارة البيانات. من خلال دمج هذه العمليات في تطبيق Yoga Pose Library الخاص بي باستخدام حزمة MERN، قمت بإنشاء تطبيق قوي يسمح للمستخدمين بالتفاعل مع أوضاع اليوغا بشكل فعال. سيؤدي فهم عمليات CRUD وتنفيذها إلى تعزيز مهارات التطوير لديك بشكل كبير وتمكينك من إنشاء تطبيقات ويب ديناميكية. وبينما أواصل تحسين تطبيقي، فإنني أتطلع إلى استكشاف المزيد من الميزات وتحسين تجربة المستخدم.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3