Node.js
Node.js / Express.js के लिए MongoDB एकीकरण
खोज…
परिचय
MongoDB सबसे लोकप्रिय NoSQL डेटाबेस में से एक है, MEAN स्टैक की मदद के लिए धन्यवाद। एक बार जब आप थोड़े से विजयी क्वेरी सिंटैक्स को समझ लेते हैं, तो एक्सप्रेस ऐप से एक मोंगो डेटाबेस के साथ इंटरफेस करना त्वरित और आसान होता है। हम हमारी मदद करने के लिए Mongoose का उपयोग करेंगे।
टिप्पणियों
अधिक जानकारी यहां पाई जा सकती है: http://mongoosejs.com/docs/guide.html
MongoDB स्थापित करना
npm install --save mongodb
npm install --save mongoose //A simple wrapper for ease of development
आपकी सर्वर फ़ाइल में (सामान्य रूप से नामित index.js या server.js)
const express = require('express');
const mongodb = require('mongodb');
const mongoose = require('mongoose');
const mongoConnectString = 'http://localhost/database name';
mongoose.connect(mongoConnectString, (err) => {
if (err) {
console.log('Could not connect to the database');
}
});
एक Mongoose मॉडल बनाना
const Schema = mongoose.Schema;
const ObjectId = Schema.Types.ObjectId;
const Article = new Schema({
title: {
type: String,
unique: true,
required: [true, 'Article must have title']
},
author: {
type: ObjectId,
ref: 'User'
}
});
module.exports = mongoose.model('Article, Article);
चलो इसे विच्छेदित करते हैं। MongoDB और Mongoose JSON का उपयोग करते हैं (वास्तव में BSON, लेकिन यह यहां अप्रासंगिक है) डेटा प्रारूप के रूप में। शीर्ष पर, मैंने टाइपिंग कम करने के लिए कुछ चर निर्धारित किए हैं।
मैं एक new Schema
बनाता हूं और इसे एक new Schema
हूं। यह सरल JSON है, और प्रत्येक विशेषता गुणों के साथ एक और ऑब्जेक्ट है जो एक अधिक सुसंगत स्कीमा लागू करने में मदद करता है। अद्वितीय बलों को नए उदाहरण डेटाबेस में डाले जा रहे हैं, जाहिर है, अद्वितीय हैं। किसी सेवा पर कई खाते बनाने वाले उपयोगकर्ता को रोकने के लिए यह बहुत अच्छा है।
आवश्यक एक और है, एक सरणी के रूप में घोषित किया गया है। पहला तत्व बूलियन मूल्य है, और दूसरा त्रुटि संदेश में मूल्य डाला जाना चाहिए या अपडेट विफल होना चाहिए।
ObjectIds का उपयोग मॉडल के बीच संबंधों के लिए किया जाता है। उदाहरण 'उपयोगकर्ता के पास कई टिप्पणियाँ हैं' हो सकते हैं। ObjectId के बजाय अन्य विशेषताओं का उपयोग किया जा सकता है। उपयोगकर्ता नाम की तरह तार एक उदाहरण है।
अंत में, अपने एपीआई मार्गों के साथ उपयोग के लिए मॉडल निर्यात करना आपके स्कीमा तक पहुंच प्रदान करता है।
अपने Mongo डेटाबेस को छोड़कर
एक सरल GET अनुरोध। मान लेते हैं कि उपर्युक्त उदाहरण से मॉडल फ़ाइल में है ./db/models/Article.js
।
const express = require('express');
const Articles = require('./db/models/Article');
module.exports = function (app) {
const routes = express.Router();
routes.get('/articles', (req, res) => {
Articles.find().limit(5).lean().exec((err, doc) => {
if (doc.length > 0) {
res.send({ data: doc });
} else {
res.send({ success: false, message: 'No documents retrieved' });
}
});
});
app.use('/api', routes);
};
अब हम इस अंतिम बिंदु पर एक HTTP अनुरोध भेजकर अपने डेटाबेस से डेटा प्राप्त कर सकते हैं। हालांकि कुछ प्रमुख बातें:
- सीमा बिल्कुल वैसा ही करती है जैसा वह दिखता है। मुझे केवल 5 दस्तावेज वापस मिल रहे हैं।
- कच्ची BSON से कुछ सामान दूर हो जाता है, जिससे जटिलता और ओवरहेड कम हो जाते हैं। की जरूरत नहीं है। लेकिन उपयोगी है।
- का उपयोग करते समय
find
के बजायfindOne
, पुष्टि करें किdoc.length
अधिक से अधिक 0. से इसका कारण यह है हैfind
हमेशा एक सरणी देता है, तो एक खाली सरणी जब तक यह लंबाई के लिए चेक किया गया है अपने त्रुटि को संभाल नहीं होगा - मैं व्यक्तिगत रूप से उस प्रारूप में त्रुटि संदेश भेजना चाहता हूं। अपनी आवश्यकताओं के अनुरूप इसे बदलें। लौटे दस्तावेज़ के लिए एक ही बात है।
- इस उदाहरण में कोड इस धारणा के तहत लिखा गया है कि आपने इसे किसी अन्य फ़ाइल में रखा है और सीधे एक्सप्रेस सर्वर पर नहीं। सर्वर में इसे कॉल करने के लिए, इन लाइनों को अपने सर्वर कोड में शामिल करें:
const app = express();
require('./path/to/this/file')(app) //