Node.js में Joi के साथ डेटा सत्यापन: पूर्ण गाइड

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

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

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

Joi के साथ Node.js में डेटा सत्यापन

\n

आधुनिक Node.js वेब एप्लिकेशन में, डेटा सत्यापन अनुरोध प्रसंस्करण का एक महत्वपूर्ण चरण है। डेटा में त्रुटियाँ कमजोरियाँ, गलत संचालन या सर्वर क्रैश का कारण बन सकती हैं। इस कार्य के लिए सबसे शक्तिशाली और लोकप्रिय लाइब्रेरी में से एक Joi (उच्चारण "जॉय") है। यह डेटा स्कीमा का वर्णन करने और निर्धारित नियमों के अनुसार उनकी जाँच करने की अनुमति देती है।

\n\n

Joi क्या है?

\n

Joi JavaScript ऑब्जेक्ट्स के लिए स्कीमा विवरण और सत्यापन की एक लाइब्रेरी है। यह Node.js इकोसिस्टम में विशेष रूप से लोकप्रिय है, जहाँ इसका उपयोग अक्सर Express, Hapi या Fastify के साथ किया जाता है। Joi प्रकार, अनिवार्य फ़ील्ड, रेंज, रेगुलर एक्सप्रेशन और कस्टम जाँच निर्दिष्ट करने के लिए एक सरल और अभिव्यंजक API प्रदान करता है।

\n\n

स्थापना

\n

npm के माध्यम से Joi स्थापित करना:

\n
npm install joi
\n\n

मूल उदाहरण

\n

उपयोगकर्ता डेटा की जाँच के लिए एक स्कीमा बनाएँ:

\n
const Joi = require('joi');\n\nconst schema = Joi.object({\n    username: Joi.string()\n        .alphanum()\n        .min(3)\n        .max(30)\n        .required(),\n    password: Joi.string()\n        .pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')),\n    email: Joi.string()\n        .email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } })\n});\n\nconst data = {\n    username: 'user123',\n    password: 'pass123',\n    email: 'user@example.com'\n};\n\nconst { error, value } = schema.validate(data);\n\nif (error) {\n    console.log('सत्यापन त्रुटि:', error.details);\n} else {\n    console.log('डेटा सही है:', value);\n}
\n\n

मुख्य विधियाँ और नियम

\n

Joi कई प्रकार और संशोधकों का समर्थन करता है:

\n
    \n
  • डेटा प्रकार: Joi.string(), Joi.number(), Joi.boolean(), Joi.date(), Joi.array(), Joi.object()।
  • \n
  • अनिवार्यता: .required() — फ़ील्ड भरना अनिवार्य है।
  • \n
  • सीमाएँ: .min(), .max(), .length() — स्ट्रिंग और ऐरे के लिए।
  • \n
  • रेगुलर एक्सप्रेशन: .pattern(regex) — पैटर्न के अनुसार जाँच।
  • \n
  • Email और URL: .email(), .uri() — अंतर्निहित सत्यापनकर्ता।
  • \n
  • कस्टम संदेश: .messages() — मानक त्रुटियों को बदलना।
  • \n
\n\n

नेस्टेड ऑब्जेक्ट और ऐरे का सत्यापन

\n

Joi जटिल संरचनाओं को अच्छी तरह से संभालता है:

\n
const addressSchema = Joi.object({\n    street: Joi.string().required(),\n    city: Joi.string().required(),\n    zip: Joi.string().pattern(/^\\d{5}$/)\n});\n\nconst userSchema = Joi.object({\n    name: Joi.string().required(),\n    age: Joi.number().integer().min(18).max(120),\n    addresses: Joi.array().items(addressSchema).min(1)\n});\n\nconst userData = {\n    name: 'अन्ना',\n    age: 25,\n    addresses: [\n        { street: 'नेव्स्की प्रॉस्पेक्ट', city: 'सेंट पीटर्सबर्ग', zip: '191011' }\n    ]\n};\n\nconst result = userSchema.validate(userData);\nconsole.log(result.error ? result.error.details : 'ठीक है');
\n\n

त्रुटि प्रबंधन

\n

सत्यापन त्रुटि पर, Joi error.details ऑब्जेक्ट लौटाता है — प्रत्येक त्रुटि के विस्तृत विवरण वाली एक सूची:

\n
if (result.error) {\n    result.error.details.forEach(detail => {\n        console.log(`फ़ील्ड: ${detail.path.join('.')}, संदेश: ${detail.message}`);\n    });\n}
\n\n

Express के साथ उपयोग

\n

Joi का उपयोग अक्सर अनुरोधों की जाँच के लिए middleware में किया जाता है:

\n
const express = require('express');\nconst Joi = require('joi');\nconst app = express();\n\napp.use(express.json());\n\nconst validateUser = (req, res, next) => {\n    const schema = Joi.object({\n        name: Joi.string().required(),\n        email: Joi.string().email().required()\n    });\n    const { e                    

अनुशंसाएँ