{"library":"rate-limit-mongo","title":"Rate Limit Mongo Store","description":"rate-limit-mongo is a specialized MongoDB store designed for the popular `express-rate-limit` middleware, currently at version 2.3.2. This package provides a persistent, database-backed storage mechanism for rate limiting records, moving beyond in-memory or Redis solutions. It leverages MongoDB's TTL (Time-To-Live) indexes to automatically expire rate limiting entries, ensuring efficient cleanup and preventing stale data. While not on a strict release cadence, updates typically align with bug fixes or `express-rate-limit`/MongoDB driver compatibility improvements. Its primary differentiation lies in offering a robust, low-configuration MongoDB-specific solution for managing API rate limits, particularly beneficial for applications already using MongoDB and requiring shared, persistent rate limit counters across multiple instances.","language":"javascript","status":"active","last_verified":"Thu Apr 23","install":{"commands":["npm install rate-limit-mongo"],"cli":null},"imports":["import MongoStore from 'rate-limit-mongo';","const MongoStore = require('rate-limit-mongo');"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"const RateLimit = require('express-rate-limit');\nconst MongoStore = require('rate-limit-mongo');\n\nconst limiter = new RateLimit({\n  store: new MongoStore({\n    uri: process.env.MONGO_URI ?? 'mongodb://127.0.0.1:27017/test_db',\n    user: process.env.MONGO_USER ?? '',\n    password: process.env.MONGO_PASSWORD ?? '',\n    expireTimeMs: 15 * 60 * 1000, // Should match windowMs\n    errorHandler: console.error.bind(null, 'rate-limit-mongo store error')\n  }),\n  max: 100,\n  windowMs: 15 * 60 * 1000 // Should match expireTimeMs\n});\n\n// Example of how to apply it in an Express app (assuming 'app' is an Express instance)\n// app.use(limiter);","lang":"javascript","description":"This code demonstrates the basic setup of `rate-limit-mongo` as a store for `express-rate-limit`, configuring connection details and matching `expireTimeMs` with `windowMs`.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}