Joi के साथ Node.js में डेटा सत्यापन
\nआधुनिक Node.js वेब एप्लिकेशन में, डेटा सत्यापन अनुरोध प्रसंस्करण का एक महत्वपूर्ण चरण है। डेटा में त्रुटियाँ कमजोरियाँ, गलत संचालन या सर्वर क्रैश का कारण बन सकती हैं। इस कार्य के लिए सबसे शक्तिशाली और लोकप्रिय लाइब्रेरी में से एक Joi (उच्चारण "जॉय") है। यह डेटा स्कीमा का वर्णन करने और निर्धारित नियमों के अनुसार उनकी जाँच करने की अनुमति देती है।
\n\nJoi क्या है?
\nJoi JavaScript ऑब्जेक्ट्स के लिए स्कीमा विवरण और सत्यापन की एक लाइब्रेरी है। यह Node.js इकोसिस्टम में विशेष रूप से लोकप्रिय है, जहाँ इसका उपयोग अक्सर Express, Hapi या Fastify के साथ किया जाता है। Joi प्रकार, अनिवार्य फ़ील्ड, रेंज, रेगुलर एक्सप्रेशन और कस्टम जाँच निर्दिष्ट करने के लिए एक सरल और अभिव्यंजक API प्रदान करता है।
\n\nस्थापना
\nnpm के माध्यम से Joi स्थापित करना:
\nnpm install joi\n\nमूल उदाहरण
\nउपयोगकर्ता डेटा की जाँच के लिए एक स्कीमा बनाएँ:
\nconst 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मुख्य विधियाँ और नियम
\nJoi कई प्रकार और संशोधकों का समर्थन करता है:
\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
नेस्टेड ऑब्जेक्ट और ऐरे का सत्यापन
\nJoi जटिल संरचनाओं को अच्छी तरह से संभालता है:
\nconst 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 ऑब्जेक्ट लौटाता है — प्रत्येक त्रुटि के विस्तृत विवरण वाली एक सूची:
if (result.error) {\n result.error.details.forEach(detail => {\n console.log(`फ़ील्ड: ${detail.path.join('.')}, संदेश: ${detail.message}`);\n });\n}\n\nExpress के साथ उपयोग
\nJoi का उपयोग अक्सर अनुरोधों की जाँच के लिए middleware में किया जाता है:
\nconst 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