اذهب إلى المحتوى

السؤال

نشر

السلام عليكم .. اود عمل تطبيق للكورسات باستخدام النود ورياكت ناتيف .. 

فى النود اود رفع بيانات خاصة باسئلة واجابات هذه الاسئلة .. 

لكى تفهم ما اقصده الق نظرة على هذا الكود ..

// هذا هو ال model

const mongoose = require("mongoose");

const questSchema = mongoose.Schema({
  name: String,
  answers: [
    {
      num: String,
      ansName: String,
      correct: Boolean,
    },
  ],
});

module.exports.Quest = mongoose.model("Quest", questSchema);

هذا هو الراوتر 


router.post("/", async (req, res) => {
  let newQuest = new Quest({
    name: req.body.name,
    answers: [
      {
        num: req.body.num,
        ansName: req.body.ansName,
        correct: req.body.correct,
      },
    ],
  });
  newQuest = await newQuest.save();

  res.send(newQuest);
});

انا الان اريد ان اجعل لكل سؤال اربع اجابات لذلك وضعتهم فى array لاننى اريد طباعة سؤال مع عدة اجابات فانا اكتب فى postman الكود التالى

{"name": "question 1",
    "answers": [
      {
        "num": "1",
        "ansName": "answer 1",
        "correct": false
      },
      {
        "num": "2",
        "ansName": "answer 2",
        "correct": true
      },
      {
        "num": "3",
        "ansName": "answer 3",
        "correct": false
      }
    ]
}

لكنه يقوم بطباعة أوبجكت واحد فارغ فى الداتا بيز .. 

هذا الكود الاخير يعمل لكن لايمكننى ان ارفع الا اجابة واحدة لسؤال واحد .. عندما اقوم بعمل هذا request فى بوست مان 

{"name": "question 1",
        "num": "1",
        "ansName": "answer 1",
        "correct": true
}

هذه الطريقة تنجح لكنها لا تنفع لانه يطبع اجابة واحدة فقط .. ونا ااريد ان اطبع ثلاثة او اكتر .. ما العمل ؟؟ ما الكود الواجب على كتابته فى postman لطباعة Array تحتوى على أكثر من أوبجكت ؟؟

Recommended Posts

  • 0
نشر (معدل)

سيدي العزيز هل يقوم هذا الكود بحفظ البيانات بطريقة صحيحة ؟؟؟

إن كنت قد قمت بتعرف قائمة البيانات بحفظ مصفوفة من البيانات ك answers يمكنك عمل الاتي 

 

router.post("/", async (req, res) => {
  let newQuest = new Quest({
    name: req.body.name,
    // هنا فقط تقوم باخد اسم المتغير من البودي و وضعه كامل كما هو 
    answers: req.body.answers 
})
  newQuest = await newQuest.save();

  res.send(newQuest);
});

و ان لم تقم بتعريف قائمة البيانات بأخذ الأجوبة كمصفوفة فيمكنك عمل الاتي 

router.post("/", async (req, res) => {
  
  // هنا تفوم بعمل لوب و تحفظ كل قيمة على حده و لكن بنقس اسم السؤال 
   var finalresult =[]
  for(var i = 0 ; i< req.body.answers.length ; i++){
  
  let newQuest = new Quest({
    name: req.body.name,
    answers: [
      {
        num: req.body.num,
        ansName: req.body.ansName,
        correct: req.body.correct,
      },
    ],
  });
  newQuest = await newQuest.save();
   finalresult.push(newQuest)
  }

  res.send(finalresult);
});

 

تم التعديل في بواسطة Nuhla Almasri
  • 0
نشر

في headers قم بإضافة ال header التالي  content-type : application/json (أنظر الصورة)

بعد ذلك يمكنك إرسال data على شكل json . يجب أن تتأكد أنك تقوم بإرسال json وليس شكل اخر من data

{"name": "question 1",
    "answers": [
      {
        "num": "1",
        "ansName": "answer 1",
        "correct": false
      },
      {
        "num": "2",
        "ansName": "answer 2",
        "correct": true
      },
      {
        "num": "3",
        "ansName": "answer 3",
        "correct": false
      }
    ]
}

 

 

0.PNG

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...