express-easy-curd
v2.1.2
Published
A lightweight helper library for building Express.js routes, controllers, advanced query with mongoose, and Redis-enhanced middleware with optional Redis support.
Maintainers
Readme
🚀 express-easy-curd
A lightweight helper library for building Express.js routes, controllers, and Redis-enhanced middleware. Simplify your CURD operations with flexible APIs, built-in helpers, and optional caching.
⚠️⚠️ Deprecated Package Notice
This package has been deprecated and is no longer maintained.
👉 Please use the new package instead:
xmcrud
You will find the latest updates, bug fixes, and new features there.
- ✅ Generic CURD controller for Mongoose models
- ✅ Auto-generated Express routes
- ✅ Optional Redis caching via
ioredis - ✅ Query filtering and pagination helpers
- ✅ TypeScript support with included types
- ✅ Partial search and dynamic filtering
npm install express-easy-curd
# or
yarn add express-easy-curdPeer dependencies: You must install compatible versions of
express,mongoose, and optionallyioredis.
npm install express mongoose ioredis1. Controller Example
import express from "express";
import mongoose from "mongoose";
import { generateCrudController } from "express-easy-curd";
const UserModel = mongoose.model("User", new mongoose.Schema({ name: String }));
const userController = generateCrudController(UserModel, "User");
const app = express();
app.use(express.json());
app.get("/users", userController.getAll);
app.post("/users", userController.create);
app.put("/users", userController.updateMany);
app.patch("/users/update-many", userController.updateMany);
app.delete("/users/delete-many", userController.removeMany);
app.get("/users/:id", userController.getSingle);
app.put("/users/:id", userController.update);
app.patch("/users/:id", userController.update);
app.delete("/users/:id", userController.remove);
app.listen(3000, () => {
console.log("Server running on port 3000");
});⚠️ Warning: Use proper validation for
removeManyandupdateManyto avoid unintended data loss.
2. Router Example
import express from "express";
import mongoose from "mongoose";
import { generateCrudRoutes } from "express-easy-curd";
const UserModel = mongoose.model("User", new mongoose.Schema({ name: String, age: Number }));
const curdRouter = generateCrudRoutes({
mongooseModel: UserModel,
name: "User",
basePath: "/users",
middlewares: {
getAll: [...middlewares],
create: [...middlewares],
removeMany: [...middlewares],
updateMany: [...middlewares],
getSingle: [...middlewares],
update: [...middlewares],
remove: [...middlewares],
},
});
const app = express();
app.use(express.json());
app.use("/api", curdRouter);Generated Routes:
| Method | Path | Description |
| ------ | ----------------------------------------- | ----------------- |
| GET | /api/users | Get all users |
| POST | /api/users | Create user |
| PUT | /api/users?name=suronjit797 | Update many users |
| PATCH | /api/users/update-many?name=suronjit797 | Update many users |
| DELETE | /api/users/delete-many?name=suronjit797 | Delete many users |
| GET | /api/users/:id | Get user by ID |
| PUT | /api/users/:id | Update user by ID |
| PATCH | /api/users/:id | Update user by ID |
| DELETE | /api/users/:id | Delete user by ID |
3. With Redis Caching (Optional)
import Redis from "ioredis";
const redisClient = new Redis();
const userController = generateCrudController(UserModel, "User", redisClient, 600);
const curdRouter = generateCrudRoutes({
mongooseModel: UserModel,
name: "User",
basePath: "/users",
ioredis: redisClient,
cachedTime: 600, // in seconds (default: 600 = 10 minutes)
});filterHelper(req.query, partialKeys, model)– Builds MongoDB filters from query paramspaginationHelper(req.query)– Handles pagination and sortingsendResponse(res, data)– Standardizes API responsesApiError– Custom error classpartialFilterMiddlewares(keys)– Enables partial search on string fields
const pagination = paginationHelper(req.query);
const filter = filterHelper(req.query, req.partialFilter || [], new UserModel());
const UserRouter = generateCrudRoutes({
mongooseModel: UserModel,
name: "User",
middlewares: {
getAll: [partialFilterMiddlewares(["name", "email"])],
},
});Use Mongoose-style operators in query strings:
| Operator | Query Param |
| --------- | ----------- |
| $gt | _gt |
| $lt | _lt |
| $gte | _gte |
| $lte | _lte |
| $ne | _ne |
| $in | _in |
| $nin | _nin |
| $regex | _regex |
| $exists | _exists |
Example:
GET /users?age_gt=10&name=suronjit797&search=itemType definitions are included:
import { IMeta } from "express-easy-curd/dist/Types/types";Pull requests and issues are welcome!
MIT © Suronjit Pal (@suronjit797)

