Database Connection
Relevant source files - .env.example - config/env.js - database/mongodb.js
This page describes the MongoDB connection infrastructure for the Subscription Tracker API. The application utilizes Mongoose as an Object Data Modeling (ODM) library to manage the lifecycle of the database connection, ensuring that the system is properly configured before handling any API requests.
Connection Lifecycle and Validation
The database connection logic is encapsulated within database/mongodb.js. The process begins with environment validation and ends with a persistent connection to the MongoDB cluster.
Startup Validation
Before attempting to connect, the module performs a critical check on the environment variables. If the DB_URI (the MongoDB connection string) is missing from the environment configuration, the application throws an immediate error to prevent it from running in an unstable state database/mongodb.js4-6
The Connection Function
The connectDb function is an asynchronous routine responsible for establishing the link between the Express server and the MongoDB database database/mongodb.js8-16
- Mongoose Connect: It calls
mongoose.connect(DB_URI)using the URI provided via the environment configuration database/mongodb.js10 - Success Logging: Upon a successful connection, it logs the current environment mode (e.g., development or production) to the console database/mongodb.js11
- Failure Handling: If the connection fails (e.g., due to network issues or invalid credentials), the error is caught, logged, and the entire Node.js process is terminated using
process.exit(1)database/mongodb.js12-15 This "fail-fast" approach ensures that the server does not attempt to process requests without a functional data layer.
Sources:
Architecture and Data Flow
The following diagrams illustrate how the database connection integrates with the application's configuration layer and its internal logic.
Configuration to Connection Flow
This diagram shows how the environment variables are loaded and validated before the connectDb function executes.
[Flowchart Diagram]
Sources:
Code Entity Association
This diagram maps the natural language concepts of "Connection Management" to the specific code entities defined in the project.
[Flowchart Diagram]
Sources:
Configuration Reference
The connection relies on specific environment variables defined in the configuration layer.
| Variable | Source File | Description |
|---|---|---|
DB_URI |
.env.example3 | The full MongoDB connection string (e.g., mongodb+srv://...) |
NODE_ENV |
.env.example2 | Determines which environment file is loaded (development/production) |
Environment Loading
The config/env.js file uses the dotenv package to load variables from a file named .env.[NODE_ENV].localconfig/env.js3 This allows the database/mongodb.js module to dynamically receive the correct credentials based on the deployment environment database/mongodb.js2
Sources: