كل الأنشطة
- الساعة الماضية
-
عدنان دحروج اشترك بالأكاديمية
-
Rida Berkaoui اشترك بالأكاديمية
-
اسامه فراج شحاتة الرفاعي اشترك بالأكاديمية
-
Zen Eddin Allaham بدأ بمتابعة مساعدة في مشروع
-
تواجهني مشكلة غريبة ولا اعلم ما هي حتى ذكاء اصطناعي لم يستطع حلها مشكلة موجودة في ملف page.tsx داخل مجلد home To-do-list full stack.zip
-
- 1
-
-
أولا يجب عليك معرفة أن الشهادة ليست هي الشئ الأهم بالنسبة لك . فالدورة باكملها مهمة جدا يجب عليك دراستها بأكملها للحصول على أقصى إستفادة منها. أما بخصوص سؤالك فالإجابة لا . أنت ستحدد الأربع مسارات التي أنهيتها وتريد الإختبار فيهم . وسيقوم بالمدرب فقط بإمتحانك في تلك الأربع مسارات فقط ولن يتطرق إلى المسارات الأخرى. أيضا أنت الذي تحدد الأربع مسارات المناسبين لك وليس إجبار عليك إختيار مسارات معينة.
-
عماد شيخ العشرة بدأ بمتابعة استفسار عن: الامتحان وشروطه
-
بخصوص الامتحان فلن يسالك المدرب عن شيء لن تدرسه وفي حال نقص المعلومات لديك فقد يطلب المدرب منك دراسة شيء اخر والأمر ينطبق على الامتحان ايضا ففي حال لا يوجد معلومات كافية قد يطلب منك تعلم اشياء ومنها سوف تعمل المشروع المطلوب منك على أساسها. بعد اكمال المسارات يمكنك التواصل مع مركز المساعدة واخبارهم انك تريد التقديم على الامتحان وهم سوف يرشدوك بطرق افضل في ما ينفعك.
- اليوم
-
نورة عبيد اشترك بالأكاديمية
-
حصة الدوسري2 اشترك بالأكاديمية
-
Sami Dhabban بدأ بمتابعة استفسار عن: الامتحان وشروطه
-
من شروط الامتحان واخذ الشهادة، اتمام اربعة مسارات على الاقل، بمعنى ان لدى دورة علوم الحاسوب 10 مسارات، انتهائي من 4 منها يؤهلني الى الامتحان واخذ الشهادة. سؤالي هو: الأربعة مسارات سأختارها انا حسب اهميتها بالنسبة لي, ولكن هل المدرب الذي سيسألني عن الدورة سيسألني خارج المسارات التي درستها ؟ وسيطلب مني مشروع تخرج خارج المسارات التي درستها؟ لأن الجامعة على الابواب واريد التعلم والدراسة من الدورة ماقد يفيدني بالجامعة والتحضير لها، لذلك اريد تحديد اهم اربعة مسارات بالنسبة لي في الجامعة، علما بأنها دورة علمية اكثر من انها مهارية. تحياتي لكم.
- 2 اجابة
-
- 2
-
-
Alaa Aldeen Nashwan Moammed Abo Arrijal اشترك بالأكاديمية
-
Ahmed Mohsen18 اشترك بالأكاديمية
-
Mnj Hgfv اشترك بالأكاديمية
-
Ahmed Saad30 اشترك بالأكاديمية
-
محمود جمال18 اشترك بالأكاديمية
-
وعليكم السلام ورحمة الله وبركاته. إليك الفيديو التالي عن أساسيات git وكيفية التعامل معه يمكنك مشاهدته لفهم الأساسيات : وإذا أردت معرفة كيفية رفع المشاريع عليه إليك الإجابات التالية :
-
السلام عليكم حياكم الله، المرجو المساعدة في التعامل مع موقع github، إن كان هناك من فيديوها أو مقالات أو نصائح في التعامل معه.
- 1 جواب
-
- 1
-
- البارحة
-
هل مكتبة PyTorch عند استخدامها لبناء الشبكات العصبية الالتفافية (CNN) تجبرني أن أحمّل البيانات وأعالجها فقط من خلالها، وكأنها نظام مغلق مثل منتجات أبل (حيث كل شيء يعمل مع بعضه)، أم يمكنني الاستعانة بمكتبات أخرى مثل cv2 أو os أو غيرها في تجهيز البيانات؟
Mustafa Suleiman رد على سؤال Ali Ahmed55 في علوم الحاسوب
ستحتاج إلى استخدام دوال PyTorch فقط في حال المعالجة جزء من الرسم البياني ويجب أن يدخل في حساب الـ back-prop كـ RandomCrop يُطبق داخل النموذج نفسه. أو لو تريد أن تتم العملية على الـ GPU مباشرةً، فحينها يجب أن تكون الدوال من مكتبة تورش أو تدعم CUDA. لكن PyTorch قائمة على مبدأ المرونة، بمعنى لا تهتم بكيفية وصول البيانات بل فقط بالشكل النهائي، فالبيانات الخام من أي مصدر وأي شكل، تستطيع معالجتها بأي مكتبة تريد سواء PIL أو panadas ثم تحويلها إلى تحويل إلى torch.Tensor و التدريب في PyTorch. القيد الوحيد هو أن ما يدخل إلى الشبكة في النهاية يجب أن يكون torch.Tensor، أما كل ما يسبق ذلك من قراءة الملفات، المعالجة، الـ augmentation، دمج بيانات إضافية وخلافه فتستطيع إنجازه بأي مكتبة في بايثون. وذلك لأنّ PyTorch مجرد إطار للحوسبة التفاضلية، والـ Autograd يحتاج إلى Tensor لكي يتتبع التدرجات، ولا يهتم بكيفية وصول البيانات إلى الـ Tensor. وجميع التحويلات خارج الرسم البياني كقراءة الصورة أو قصها لا تحتاج إلى أن تكون عمليات torch أصلاً. -
الدورة ليس تخصصها مجال تحليل البيانات، ما ستتعلمه بها هو جزء كبير من الأساسيات اللازمة لذلك المجال، بعد ذلك ستحتاج تعلم أساسيات برنامج الـ Excel، وبالأخص دوال ومعادلات SUM, AVERAGE, VLOOKUP, INDEX, و MATCH. ثم دورة لتعلم الإحصاء والإحتمالات، سواء من Khan Academy أو من مصادر أخرى، ثم دورة أخرى متخصصة في تحليل البيانات باستخدام برنامج الـ Excel. ثم تعلم قواعد البيانات ولغة الـ SQL وقد تعلمت ذلك بالدورة بالفعل، لكن ستحتاج إلى تعلم SQL for Data Analytics للتعمق قليلاً والتعرف على مفاهيم متقدمة منها JOINs بأنواعها، GROUP BY, Window Functions, Subqueries, CTEs، وللعلم معظم مقابلات العمل لمحللي البيانات تتضمن أسئلة SQL متقدمة. الخطوة التالية هي تعلم أحد برامج التحليل والتصوير المرئي للبيانات مثل Power BI أو Tableau أو Google Looker Studio، وأنصحك ببرنامج Power BI فهو المطلوب في سوق العمل. كما أنه يجب عليكِ الاستمرار في التطبيق بكثافة على بيانات حقيقية لتحليلها كلما تقدمت في المسار التعليمي، ومن أشهر المواقع التي يمكنك الحصول منها على بيانات لتقم بتحليلها هو موقع Kaggle الشهير، ولديك أيضًا Data.gov. للتبسيط الصورة التالية جيدة: وفي المرحلة المتقدمة ستحتاج إلى دراسة تعلم الآلة، وذلك ما ستتعلمه بالدورة بالفعل، بالتالي تحتاج إلى دراسة القليل خارج الدورة فيما يخص الأساسيات. ستجد هنا تفصيل لما تحتاجه: https://roadmap.sh/data-analyst
-
الأمر ليس له علاقة بسرعة الكتابة من قريب أو بعيد في مجال البرمجة، فأنت لست كاتب محتوى بل مهندس برمجيات أو مبرمج أيًا كان المُسمى. وظيفتك هي حل مشكلة من خلال البرمجة، أي التفكير والتحليل المنطقي هي المهارة الأهم، وكذلك استيعابك العميق للأساسيات، جودة الكود، قدرتك على التعلم، والخبرة في التقنيات التي تستخدمها أو التخصص الخاص بك سواء مطور واجهة خلفية أو أمامية وخلافه. السرعة والدقة في التنفيذ هي نتاج ما سبق، فالمبتدئين يواجهة صعوبة في التنفيذ بسرعة وبدون أخطاء جسيمة وكذلك جودة الكود أقل، لكن بعد فترة من الممارسة العملية يتم اكتساب تلك الخبرة بطبيعة الحال. لذا يجب العمل على المُسبب الصحيح للبطيء في التنفيذ، والسرعة في الكتابة مجرد مهارة مساعدة، وليست أساسية وتستطيع تطويرها تدريجيًا ولن يسألك أحد عنها في المقابلات. لكن في حال كنت بطيء في استخدام لوحة المفاتيح بشكل عام، فتلك مشكلة، تستطيع حلها بالممارسة الأمر بسيط.
-
لا علاقة لمجال المحاسبة بالبرمجة، الأمر سيفيدك فقط عند العمل على مشاريع محاسبية مثل أنظمة ERP، أو Fintech، أو مشاريع متعلقة بإدخال قيود، مطابقة حسابات، إعداد تقارير. ولديك أفضلية في العمل في شركة ناشئة تبني تطبيق لإدارة المصاريف الشخصية، أو تطوير أنظمة دفع إلكتروني، أو منصات إقراض، أو برامج لإدارة الاستثمار، لأنك مستوعب للوائح المالية والمبادئ المحاسبية التي يجب أن يلتزم بها أي منتج مالي. لكن الفكرة أنه بعد تخرجك تنسى ما درسته إلا في حال كنت ترغب التخصص في مجال المحاسبة والبحث عن وظيفة بها، لذا الشركات التي بحاجة إلى محاسب، سترى أنك مشتت بين المجالين، والشركات التي بحاجة غلى مبرمج، سترى أن خبرتك البرمجية ليست كافية. لذا الحل الأنسب في حال تريد البرمجة هو التعمق بها، وأيضًا التعمق في مشاريع Fintech. أو التركيز على تعلم بايثون وOdoo لتصبح متخصص ERP.
-
ليس الأمر كما تعتقد حيث أن المبرمج يقضي معظم وقته في القراءة والتفكير، والقليل فقط في الكتابة. بمعنى آخر، السرعة في الكتابة على لوحة المفاتيح ليست العامل المحدد لإنتاجيتك. لكن هناك فرق بين "الكتابة السريعة جدًا" و"الكتابة المريحة". ما تحتاجه حقًا هو مستوى معقول من الراحة في استخدام لوحة المفاتيح . إذا كنت تستطيع كتابة الكود بسرعة معقولة دون النظر كثيرًا للوحة المفاتيح فذلك ممتاز وهو ما عليه معظم المبرمجون . وأعتقد أنه لا يوجد مدير توظيف أو مقابل عمل سيطلب منك اختبار سرعة كتابة على لوحة المفاتيح للحصول على وظيفة برمجة. ما يهمهم هو قدرتك على حل المشكلات، فهمك للخوارزميات، معرفتك بالأدوات والتقنيات، وقدرتك على العمل ضمن فريق.
-
بالفعل هذه المشكلة بسبب قلة التطبيق العملي وهذه المشكلة طبيعية في البداية ولذلك البدء بمشاريع صغيرة . صفحة هبوط بسيطة من ثلاثة أقسام أفضل من محاولة بناء موقع معقد. مع كل مشروع صغير، تقدر اتخاذ القرارات الصحيحة عند استخدام التقنيات مثل css و html ولاحظ أن المشكلة ببساطة عندما تعرف أن margin و padding و gap كلها تخلق مسافات، لكن لا تعرف متى تستخدم كل واحدة منها بالضبط، هنا تحدث الحيرة. والتطبيق العملي هو ما يحل ذلك مع مع الاستفسار دائماً عن الخصائص التي نستخدمها مثلاً لماذا نستخدم grid وليس flex؟ لماذا padding وليس margin؟ هذا التحليل هو ما يجعلك تعتمد على نفسك بفهم عميق لهذه الخصائص.
-
بالإضافة لما سبق معظم اللغات والتقنيات الكبيرة زي JavaScript أو Python أو React لها نشرات بريدية (newsletters) تشترك بها وتصلك التحديثات المهمة تلقائياً على الإيميل. مثلاً في "JavaScript Weekly" أو "Python Weekly" والتي تجمع أهم الأخبار والتحديثات كل أسبوع. وذلك بالإضافة للمجتمع التقني الذي يجعلك على علم بجميع التحديثات . وأخيراً لا يتم تحديث المشاريع القديمة لأحدث إصدار مبشارة. إنما الأفضل البقاء على إصدار مستقر يعمل بشكل جيد، وغالباً يتم استخدام الإصدارات الحديثة عند إنشاء مشروع جديد والمشاريع القديمة يتم تحديثها تدريجياً.
-
كما تم الشرح في التعليقات السابقة فإنه يمكنك الحصول على الصور التي تريدها من خلال مواقع الصور المجانية فتحتوي على صور احترافية مثل. Unsplash Pexels Pixabay وابحث عن "MacBook" أو "Laptop on desk" وستجد نتائج جيدة. أما بالنسبة ل Gemini Pro فيقوم بإنتاج صور احترافية ولكن تحتاج تحسين طريقة كتابة "الأمر" أو الـ (Prompt). للحصول على صور احترافية، عليك أن تكون محدداً جداً. لا تكتب: "صورة جهاز ماك بوك" (A picture of a MacBook) بل اكتب وصفاً تفصيلياً كأنك تصف الصورة لمصور محترف: مثال على Prompt احترافي: "صورة واقعية لمنتج، أحدث جهاز MacBook Pro باللون الرمادي الفلكي، موضوع على مكتب خشبي بسيط ونظيف، إضاءة استوديو احترافية ناعمة من الجانب، خلفية بيضاء تماماً، زاوية تصوير منخفضة قليلاً لإظهار فخامة الجهاز، دقة عالية 8K، تفاصيل دقيقة."
- 5 اجابة
-
- 1
-
-
يمكنك رفع المشاريع التي تقوم بها على github بدون أي مشكلة والمقصد أن github هو سيرتك الذاتية ولذلك يجب أن يتضمن عدة مشاريع قوية ولذلك اختر 3 إلى 5 مشاريع قوية، واكتب لها توثيقًا (Documentation) ممتازًا، وقم بتثبيتها (Pin) في صفحتك الرئيسية. أما بقية التمارين والمشاريع الصغيرة، فاحفظها للتدريب الشخصي أو في مستودعات خاصة.
-
ليس بالضرورة دمج المجالين كما تعتقد وإنما يمكنك الإستفادة من البرمجة في مجال المحاسبة فمثلاً تعلم الأتمتة (Automation) مهم فكتير من المهام المحاسبية المتكررة ممكن تتبرمج وتوفر وقت ومجهود وأيضاً ال Database Management SQL ضروري جداً لأي محاسب محترف كالتعامل مع قواعد البيانات المالية الضخمة واستخراج التقارير المالية بكفاءة . وأيضاً من أهم اللغات التي يمكن استخدامها في مجالك هي Python والتي تساعدك في مجال مثل Data Analysis والذي ربما يكون بعيداً عن البرمجة ولذلك يمكنك لاحقاً تعلم Python و SQL كبداية،ثم الدخول في مجالات أخرى حسب اهتمامك!
- آخر أسبوع
-
حليت مشكلة اخي مصطفى لا داعي للارسال مشروع شكرا جزيلا لك
-
أرفق المشروع لديك مع أحدث تعديل لتفقده
-
اوك اخي مصطفى مشكور بس وقت حطيت شرط يلي يتحقق من وجود id وقت استخدمت دالة PATCH و DELETE في مجلد [id] ظهرت استجابة invalid id بس انا عرفت id ب params ومع ذالك يوجد خطأ if (!mongoose.Types.ObjectId.isValid(params.id)) { return NextResponse.json({ error: "Invalid id" }, { status: 400 }); }
-
توقيع الدوال في [id]/route.ts غير صحيح قمت بتعريفها كـ PATCH(request, params) وDELETE(request, params) بدلًا من PATCH(request, { params }) وDELETE(request, { params }). بالتالي params.id يصبح undefined، عند إنشاء مشروع Next.js (App Router)، فدوال المسارات الديناميكية تستقبل params داخل كائن ثانٍ بشكل هيكلي، والتوقيع الصحيح هو (request, { params }) وليس (request, params) import { connectDB } from "@/app/libs/connectDB"; import { NextRequest, NextResponse } from "next/server"; import jwt from 'jsonwebtoken'; import User from "@/app/models/User"; import Todos from "@/app/models/Todos"; import mongoose from "mongoose"; type Params = { id: string; } export async function GET(request:NextRequest, {params} : {params: Params }){ try{ await connectDB(); const authHeader = request.headers.get("authorization"); if(!authHeader || !authHeader.startsWith("Bearer ")){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const token = authHeader.split(" ")[1]; const decoded = jwt.verify(token , process.env.JWT_SECRET); const userId = (decoded as {userId?: string}).userId; if(!userId){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const user = await User.findById(userId); if(!user){ return NextResponse.json({error: "User not found!"}, {status: 404}); } if (!mongoose.Types.ObjectId.isValid(params.id)) { return NextResponse.json({ error: "Invalid id" }, { status: 400 }); } const task = await Todos.findOne({_id: params.id , userId}); if(!task){ return NextResponse.json({error: "Task not found"}, {status: 404}); } return NextResponse.json({task}) }catch(e:any){ return NextResponse.json({error: e.message}, {status:500}) } } export async function PATCH(request:NextRequest, { params }: { params: Params }){ try{ await connectDB(); const {title , content} = await request.json(); const authHeader = request.headers.get("authorization"); if(!authHeader || !authHeader.startsWith("Bearer ")){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const token = authHeader.split(" ")[1]; const decoded = jwt.verify(token , process.env.JWT_SECRET) const userId = (decoded as {userId?: string}).userId; if(!userId){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const user = await User.findById(userId).select("-password"); if(!user){ return NextResponse.json({error: "User not found!"}, {status: 404}); } if (!mongoose.Types.ObjectId.isValid(params.id)) { return NextResponse.json({ error: "Invalid id" }, { status: 400 }); } const taskUpdate = await Todos.findOneAndUpdate( {_id: params.id , userId}, { title , content }, {new: true} ); if(!taskUpdate){ return NextResponse.json({error: "Task not found"}, {status: 404}); } return NextResponse.json(taskUpdate); }catch(e:any){ return NextResponse.json({error: e.message}, {status:500}) } } export async function DELETE(request:NextRequest, { params }: { params: Params }){ try{ await connectDB(); const authHeader = request.headers.get("authorization"); if(!authHeader || !authHeader.startsWith("Bearer ")){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const token = authHeader.split(" ")[1]; const decoded = jwt.verify(token , process.env.JWT_SECRET); const userId = (decoded as {userId?: string}).userId; if(!userId){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const user = await User.findById(userId); if(!user){ return NextResponse.json({error: "User not found!"}, {status: 404}); } if (!mongoose.Types.ObjectId.isValid(params.id)) { return NextResponse.json({ error: "Invalid id" }, { status: 400 }); } const taskDelete = await Todos.findOneAndDelete({_id: params.id, userId}); if(!taskDelete){ return NextResponse.json({error: "Task not found"}, {status: 404}); } return NextResponse.json(taskDelete); }catch(e:any){ return NextResponse.json({error: e.message}, {status:500}) } }
-
بسبب أنك أرسلت طلب للمسار GET /api/auth/todos/id مع قيمة نصية للـ id وليس رقم من نوع ObjectId أي 24 حرف سداسي. فمكتبة Mongoose تعمل على تحويل الـ id إلى ObjectId لذا يجب تمرير قيمة صحيحة. لذا مرر معرف todo الصحيح في الـ URL بدل "id"، أي كالتالي /api/auth/todos/66f6a6b13f0d8b1a2c1c1234 ثم إضافة تحقق من صلاحية المعرف قبل الاستعلام لتجنب خطأ 500 وإرجاع 400 في حال المعرف غير الصحيح. أيضًا عند إنشاء مشروع Next.js (App Router)، فدوال المسارات الديناميكية تستقبل params داخل كائن ثانٍ بشكل هيكلي، والتوقيع الصحيح هو: (request, { params }) وليس (request, params) ليصبح ملف route.ts: import { connectDB } from "@/app/libs/connectDB"; import { NextRequest, NextResponse } from "next/server"; import jwt from 'jsonwebtoken'; import User from "@/app/models/User"; import Todos from "@/app/models/Todos"; import mongoose from "mongoose"; type Params = { id: string; } export async function GET(request:NextRequest, {params} : {params: Params }){ try{ await connectDB(); const authHeader = request.headers.get("authorization"); if(!authHeader || !authHeader.startsWith("Bearer ")){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const token = authHeader.split(" ")[1]; const decoded = jwt.verify(token , process.env.JWT_SECRET); const userId = (decoded as {userId?: string}).userId; if(!userId){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const user = await User.findById(userId); if(!user){ return NextResponse.json({error: "User not found!"}, {status: 404}); } if (!mongoose.Types.ObjectId.isValid(params.id)) { return NextResponse.json({ error: "Invalid id" }, { status: 400 }); } const task = await Todos.findOne({_id: params.id , userId}); if(!task){ return NextResponse.json({error: "Task not found"}, {status: 404}); } return NextResponse.json({task}) }catch(e:any){ return NextResponse.json({error: e.message}, {status:500}) } } export async function PATCH(request:NextRequest, { params }: { params: Params }){ try{ await connectDB(); const {title , content} = await request.json(); const authHeader = request.headers.get("authorization"); if(!authHeader || !authHeader.startsWith("Bearer ")){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const token = authHeader.split(" ")[1]; const decoded = jwt.verify(token , process.env.JWT_SECRET) const userId = (decoded as {userId?: string}).userId; if(!userId){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const user = await User.findById(userId).select("-password"); if(!user){ return NextResponse.json({error: "User not found!"}, {status: 404}); } if (!mongoose.Types.ObjectId.isValid(params.id)) { return NextResponse.json({ error: "Invalid id" }, { status: 400 }); } const taskUpdate = await Todos.findOneAndUpdate( {_id: params.id , userId}, { title , content }, {new: true} ); if(!taskUpdate){ return NextResponse.json({error: "Task not found"}, {status: 404}); } return NextResponse.json(taskUpdate); }catch(e:any){ return NextResponse.json({error: e.message}, {status:500}) } } export async function DELETE(request:NextRequest, { params }: { params: Params }){ try{ await connectDB(); const authHeader = request.headers.get("authorization"); if(!authHeader || !authHeader.startsWith("Bearer ")){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const token = authHeader.split(" ")[1]; const decoded = jwt.verify(token , process.env.JWT_SECRET); const userId = (decoded as {userId?: string}).userId; if(!userId){ return NextResponse.json({error: "Unauthorized"}, {status:401}) } const user = await User.findById(userId); if(!user){ return NextResponse.json({error: "User not found!"}, {status: 404}); } if (!mongoose.Types.ObjectId.isValid(params.id)) { return NextResponse.json({ error: "Invalid id" }, { status: 400 }); } const taskDelete = await Todos.findOneAndDelete({_id: params.id, userId}); if(!taskDelete){ return NextResponse.json({error: "Task not found"}, {status: 404}); } return NextResponse.json(taskDelete); }catch(e:any){ return NextResponse.json({error: e.message}, {status:500}) } }
-
انا حليت مشكلة url لكن توجد مشكلة لم افهمها والتي هي ان دالة PATCH ترجع null بدل من تعديل اما دالة DELETE ترجع استجابة خاظئة ولم افهم ما مشكلة import { connectDB } from "@/app/libs/connectDB"; import { NextRequest, NextResponse } from "next/server"; import Todos from "@/app/models/Todos"; import { authenticate } from "@/app/libs/authenticate"; import mongoose from "mongoose"; type Params = { id: mongoose.Types.ObjectId; } export async function GET(request:NextRequest, {params} : {params: Params }){ try{ await connectDB(); const userId = await authenticate(request); const task = await Todos.findOne({_id: params.id , userId}); return NextResponse.json({task}) }catch(e:any){ return NextResponse.json({error: e.message}, {status:500}) } } export async function PATCH(request:NextRequest , params:Params){ try{ await connectDB(); const {title , content} = await request.json(); const userId = await authenticate(request); const taskUpdate = await Todos.findOneAndUpdate({_id: params.id , userId}, { title , content }, {new: true}); return NextResponse.json(taskUpdate); }catch(e:any){ return NextResponse.json({error: e.message}, {status:500}) } } export async function DELETE(request:NextRequest , params:Params){ try{ await connectDB(); const userId = await authenticate(request); const taskDelete = await Todos.findOneAndDelete({_id: params.id, userId}); if(!taskDelete){ return NextResponse.json({error: "Task not found"}, {status: 404}); } return NextResponse.json(taskDelete); }catch(e:any){ return NextResponse.json({error: e.message}, {status:500}) } }
- 1 جواب
-
- 1
-
-
- 4 اجابة
-
- 1
-
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
-
tabibi.انا سويت نفس الفيديو وكل شيء تمام ولكن في اخر الحلقة اصبح لا يظهر عندي اي شيء لما اضغط على زر تسجيل مستخدم جديد ارجوا المساعدة جزاكم الله خير
- 1 جواب
-
- 1
-