Connect MongoDB with Node App using MongooseJS (original) (raw)
Last Updated : 21 Jun, 2024
The process of integrating MongoDB, a NoSQL database, with a Node.js application using MongooseJS, a MongoDB object modelling tool designed to work in an asynchronous environment.
Prerequisites:
Steps to connect MongoDB with Node App
Following are the steps to connect MongoDB with a Node.js application using MongooseJS:
**Step 1. Install MongoDB
First, you need to install MongoDB on your system or use a cloud-based MongoDB service like MongoDB Atlas.
**Step 2. Create a Node.js Application
Set up a Node.js application by initializing a new project with npm (Node Package Manager) and installing necessary dependencies.
npm init -y
**Step 3. Install MongooseJS
Use npm to install MongooseJS in your Node.js project. MongooseJS allows you to interact with MongoDB from Node.js using an easy-to-use API.
npm install mongoose
**Folder Structure:
Folder Strucutre
**Updated Dependencies:
Updated Dependencies
**Step 4. Connect to MongoDB
In your Node.js application, establish a connection to your MongoDB database using MongooseJS. This typically involves specifying the MongoDB connection URI and handling connection events.
JavaScript `
const mongoose = require('mongoose'); // Connect to MongoDB mongoose .connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });
// Handle connection events const db = mongoose.connection; db .on('error', console.error.bind(console, 'MongoDB connection error:')); db.once('open', () => { console.log('Connected to MongoDB'); });
`
Replace ‘mongodb://localhost:27017/mydatabase’ with the appropriate MongoDB connection URI for your environment.
**Step 5. Define Mongoose Schema
Define Mongoose schema to specify the structure of your MongoDB documents. This includes defining fields, types, validations, and other options.
JavaScript `
const { Schema } = mongoose;
const userSchema = new Schema({ name: String, email: { type: String, required: true, unique: true }, age: Number });
const User = mongoose.model('User', userSchema);
`
**Step 6. Perform CRUD Operations
With MongooseJS, you can easily perform CRUD (Create, Read, Update, Delete) operations on your MongoDB database using Mongoose models.
JavaScript `
// Create a new user const newUser = new User({ name: 'John', email: 'john@example.com', age: 30 }); newUser.save() .then(() => console.log('User created')) .catch(err => console.error(err));
// Find users User.find({ age: { $gte: 25 } }) .then(users => console.log('Users:', users)) .catch(err => console.error(err));
// Update a user User.updateOne({ _id: 'user_id' }, { age: 35 }) .then(() => console.log('User updated')) .catch(err => console.error(err));
// Delete a user User.deleteOne({ _id: 'user_id' }) .then(() => console.log('User deleted')) .catch(err => console.error(err));
`
**Step 7. Close MongoDB Connection
Close the MongoDB connection when your Node.js application terminates or shuts down gracefully.
JavaScript `
// Close MongoDB connection mongoose.connection.close(() => { console.log('Disconnected from MongoDB'); });
`
By following these steps, you can seamlessly connect MongoDB with your Node.js application using MongooseJS, allowing you to store and retrieve data from MongoDB in a structured and efficient manner.
**Example: To demonstrate connecting MongoDB with the Node app using the MongooseJS.
Node `
// index.js file const mongoose = require('mongoose');
// Connect to MongoDB mongoose.connect('database URI', { useNewUrlParser: true, useUnifiedTopology: true });
const db = mongoose.connection; db.on('error', console.error.bind(console, 'MongoDB connection error:')); db.once('open', () => { console.log('Connected to MongoDB');
// Define Mongoose schema
const userSchema = new mongoose.Schema({
name: String,
email: { type: String, required: true, unique: true },
age: Number
});
const User = mongoose.model('User', userSchema);
// Perform CRUD operations
// Create a new user
const newUser = new User({ name: 'John', email: 'john@example.com', age: 30 });
newUser.save()
.then(() => {
console.log('User created');
// Find users with age >= 25
return User.find({ age: { $gte: 25 } });
})
.then(users => {
console.log('Users:', users);
// Assuming you have a valid ObjectId for the user you want to update
const userIdToUpdate = '6123456789abcdef01234567'; // Replace with actual ObjectId
return User.updateOne({ _id: userIdToUpdate }, { age: 35 });
})
.then(() => {
console.log('User updated');
// Assuming you have a valid ObjectId for the user you want to delete
const userIdToDelete = '6123456789abcdef01234567'; // Replace with actual ObjectId
return User.deleteOne({ _id: userIdToDelete });
})
.then(() => {
console.log('User deleted');
// Close MongoDB connection
mongoose.connection.close();
})
.catch(err => console.error(err));
});
`
**Output:
MongoDB connection