Skip to content

Simplify CRUD operations for Mongoose models in Node.js Express with advanced features.

License

Notifications You must be signed in to change notification settings

Obaa10/mongoose-crud-helper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Express Mongoose CRUD Helper

This package provides a convenient way to create CRUD (Create, Read, Update, Delete) routes for Mongoose models in Express.js applications.

Installation

npm install em-crud

Parameters

  • className: Mongoose model class.
  • setMiddlewares: Array of middleware functions to be executed before handling requests that modify data (POST, PUT, DELETE).
  • getMiddlewares: Array of middleware functions to be executed before handling GET requests.

Get All Features

Feature Description
Count Retrieve the total count of documents based on specified query criteria.
Sorting Sort the retrieved documents based on specified fields and order.
Limit Fields Select specific fields to be included or excluded from the retrieved documents.
Pagination Enable paginated retrieval of documents, controlling the number of documents per page and navigating through pages.
Use page and limit query parameters to control pagination.
Population Populate referenced fields in the retrieved documents, enabling retrieval of associated data from other collections.

Usage

import express from "express";
import CrudRouter from "em-crud";
import User from "./models/User.js"; // Import the Mongoose User model

const app = express();

// Create middleware functions
const setMiddlewares = [];
const getMiddlewares = [];

// Create a route to handle GET requests for users
app.get("/api/users", CrudRouter({ 
  className: User, 
  setMiddlewares, 
  getMiddlewares 
}));

app.listen(3000, () => {
  console.log("Server is running on port 3000");
});

in the recent example any one can add and delete users because we did't set and setMiddlewares. Now lets add some role for adding and deleting users.

....
import AuthToken from "./middleware/authentication.js"; //Import our AuthToken middleware
import {admin} from "./middleware/authorization.js"; //Import admin authorization middleware

const setMiddlewares = [AuthToken,admin];
const getMiddlewares = [AuthToken];

// Create a route to handle GET requests for users
app.get("/api/users", CrudRouter({ 
  className: User, 
  setMiddlewares, 
  getMiddlewares 
}));
....

In this case only admin can add and delete users. And all authorized users can use get by id and get all.

The new auto generated APIs

Get One By Id

GET /api/users/:id

Create One

POST /api/users/
body:{
  full_name: "admin",
  email: "admin@gmail.com
}

Update One

PUT /api/users/:id
body:{
  full_name: "admin",
  email: "admin@gmail.com
}

Delete One

DELETE /api/users/:id

Get All With Filters

GET /api/users
query: {
  sort=-createdAt
  page=1
  limit=10
}