JavaScript (Node.js) में Joi और Yup के साथ डेटा सत्यापन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

JavaScript (Node.js) में डेटा सत्यापन: Joi और Yup



किसी भी वेब एप्लिकेशन में, विशेष रूप से Node.js पर, प्रमुख कार्यों में से एक इनकमिंग डेटा की जांच करना है। सत्यापन के बिना, आपको डेटाबेस त्रुटियाँ, कमजोरियाँ (SQL-इंजेक्शन, XSS) या सर्वर का गलत व्यवहार होने का जोखिम होता है। इस लेख में, हम सत्यापन के लिए दो सबसे लोकप्रिय लाइब्रेरीज़ पर विचार करेंगे: Joi और Yup। आप सीखेंगे कि उन्हें कैसे स्थापित करें, स्कीमा कैसे बनाएं और Express के साथ कैसे एकीकृत करें।



सर्वर पर सत्यापन की आवश्यकता क्यों है?

क्लाइंट-साइड सत्यापन (HTML5 या ब्राउज़र में JavaScript) सुविधाजनक है, लेकिन इसे आसानी से बायपास किया जा सकता है। इसलिए, सर्वर-साइड जांच अनिवार्य है। यह सुनिश्चित करता है कि:

  • डेटा प्रकार अपेक्षित (स्ट्रिंग, संख्या, ऐरे) से मेल खाते हैं।
  • आवश्यक फ़ील्ड खाली नहीं हैं।
  • डेटा अनुमत आकार से अधिक नहीं है।
  • फ़ॉर्मेट (ईमेल, URL, फ़ोन) सही हैं।


Joi लाइब्रेरी

Joi Hapi.js के निर्माताओं का एक शक्तिशाली वैलिडेटर है। यह जटिल स्कीमा, कस्टम त्रुटि संदेश और एसिंक्रोनस जांच का समर्थन करता है।



स्थापना

npm install joi


उपयोगकर्ता पंजीकरण के लिए स्कीमा उदाहरण

const Joi = require('joi');

const userSchema = Joi.object({ username: Joi.string() .alphanum() .min(3) .max(30) .required() .messages({ 'string.min': 'उपयोगकर्ता नाम कम से कम 3 अक्षर का होना चाहिए', 'string.max': 'उपयोगकर्ता नाम 30 अक्षरों से अधिक नहीं होना चाहिए' }), email: Joi.string() .email({ tlds: { allow: false } }) .required(), password: Joi.string() .pattern(new RegExp('^[a-zA-Z0-9]{8,30}$')) .required(), birth_year: Joi.number() .integer() .min(1900) .max(2024)});

// सत्यापनapp.post('/register', (req, res) => { const { error, value } = userSchema.validate(req.body, { abortEarly: false }); if (error) { return res.status(400).json({ status: 'error', message: error.details.map(d => d.message).join(', ') }); } res.json({ status: 'success', data: value });});


Joi की उन्नत सुविधाएँ

  • ऐरे का सत्यापन: Joi.array().items(Joi.string())
  • सशर्त नियम: .when('role', { is: 'admin', then: Joi.required() })
  • कस्टम फ़ंक्शन: .custom((value, helpers) => { ... })


Yup लाइब्रेरी

Yup एक हल्की और सहज लाइब्रेरी है, जो React (Formik) इकोसिस्टम में लोकप्रिय है। लेकिन यह सर्वर पर भी बढ़िया काम करती है।



स्थापना

npm install yup


लॉगिन के लिए स्कीमा उदाहरण

const yup = require('yup');

const loginSchema = yup.object().shape({ email: yup.string() .email('कृपया सही ईमेल दर्ज करें') .required('ईमेल आवश्यक है'), password: yup.string() .min(8, 'पासवर्ड कम से कम 8 अक्षर का होना चाहिए') .max(50) .required('पासवर्ड आवश्यक है')});

// Express के लिए Middlewareasync function validateLogin(req, res, next) { try { const validatedData = await loginSchema.validate(req.body, { abortEarly: false }); req.validatedData = validatedData; next(); } catch (err) { res.status(400).json({ status: 'error', errors: err.errors // त्रुटि संदेशों की सूची }); }}

app.post('/login', validateLogin, (req, res) => { res.json({ status: 'success', data: req.validatedData });});


Yup की विशेषताएँ

  • डिफ़ॉल्ट रूप से एसिंक्रोनस सत्यापन (Promise लौटाता है)।
  • डेटा परिवर्तन: .transform((value) => value.tr

अनुशंसाएँ