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

السؤال

نشر

mongodb قاعدة بيانات جيدة لكن كاءن الاخطاء الذي يصدر منه معقد وأحيانا غير مفهوم وتساءلاتي يمكن بنيها على هذا ال model

onst mongoose = require('mongoose');
const Schema = mongoose.Schema;
const addonsSchema = new Schema({
  name: {
    type: String,
    required: true,
    lowercase: true,
  },
  description: {
    type: String,
    required: true,
    lowercase: true,
  },
  imageUrl: {
    type: String,
    required: true,

  },

  price: {
    type: Number,
    required: true,
  },
});

const AddOns = mongoose.model('AddOns', addonsSchema);
module.exports = AddOns;
  • اولا كيف يمكن ارسال رسالة خطا خاصة بكل مفتاح 
  • ثانيا كيف يمكن اعتراض الخطأ القادم من mongo واعادة تعديله مثلا ليكون 
{
	messages:[{name:"name is reqiured",.....}]
}

 

Recommended Posts

  • 0
نشر

أولا عملية معالجة الأخطاء تحتاج الى تنفيذ أمور معينة على قاعدة البيانات بحيث أنه لن يتبين لك ما هية الأخطاء سوي عندما تقوم بعملية ادخال أو تعديل أو حذف هنا يتبين لك ما الحاطاء التي تحدث 

بكل الأحوال عند القيام بعمل دالة تقوم بإدخال بيان الى قاعدة البيانات فمن المهم دائما القيام بعمل try ... catch مثال على ذلك مايلي 

// هنا نقووم بتعريف الدالة التي تقوم بإدخال البيان 
function InsertData(doc, cd /* هذه دالة أخرى نقوم بتمريرها و أحذ الناتج منها سواؤ كانت خطأ أو الأدخال تم بشكل صحيح*/){
try
{
    collection.Insert(doc);
  
  // هنا نقوم بأستعمال إسم الدالة التي قمنا بتمريرها و تمرير أن النتيجة صحيحية 
  cd({result:"Done"},null)
}
catch (MongoWriteConcernException ex)
{
    if (ex.Code == 11000)
      //هنا يمكنك أن تقوم بعمل exception 
        //throw new YourConflictException("User already exists for username and/or email");
  // أو بأرسال الخطأعن طريق الدالة كالتالي 
        cd(null,{error:"MongoWriteConcernException")
    else
       // throw ex;
       cd(null,{error:"Other Exceptions")
}
}
           
           
           // و هنا الدالة  نستخدمها مثلا بال Controllers 
    // بالشكل النالي 
           
  InsertData(doc, function(data, error){
          // طبعا هنا يمكنك أن تحدد نوع ال statuse 
        if(error) res.send(error)
                   // طبعا هنا يمكنك أن تحدد نوع ال statuse 

          res.send(data)
        
        })         

 

  • 0
نشر (معدل)

بإمكانك القيام بعمليات التحقق وإرسال الخطأ الى المستخدم , عن طريق مكتبة express-validator .

اولاً قم بتحميل المكتبة باستخدام موجه الأوامر داخل مجلد المشروع الخاص بك npm install --save express-validator 

المثال الآتي يوضح كيفية استعمال المكتبة :

 

//برنامج بسيط لأنشاء حساب بواسطة مدخلات

const express = require('express');
const app = express();

app.use(express.json());

app.post('/user', (req, res) => {
  User.create({
    username: req.body.username,
    password: req.body.password,
  }).then(user => res.json(user));
});

نريد أن نتحقق من المدخلات القادمة من ال request 

const { body, validationResult } = require('express-validator');

app.post(
  '/user',
  
  // هنا نضع المدققين
  body('username').notEmpty(),
  body('password').isLength({ min: 5 }),
  
  (req, res) => {
  // نخزن في هذا المتغير نتائج التدقيق
    const errors = validationResult(req);
    
    if (!errors.isEmpty()) {
    	//هنا نقوم بإرسال مصفوفة الأخطاء إلى المستخدم
      return res.status(400).json({ errors: errors.array() });
    }

    User.create({
      username: req.body.username,
      password: req.body.password,
    }).then(user => res.json(user));
  },
);

ويمكنك الإطلاع على جميع المدققات في هذه المكتبة من هنا

 

تم التعديل في بواسطة Mohammad Al Eik

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...