https://github.com/obaa10/mongoose-crud-helper
Simplify CRUD operations for Mongoose models in Node.js Express with advanced features.
https://github.com/obaa10/mongoose-crud-helper
crud express javascript mongoose nodejs nodejs-library npm-package
Last synced: 10 months ago
JSON representation
Simplify CRUD operations for Mongoose models in Node.js Express with advanced features.
- Host: GitHub
- URL: https://github.com/obaa10/mongoose-crud-helper
- Owner: Obaa10
- License: mit
- Created: 2024-03-24T08:27:01.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-20T18:07:39.000Z (over 1 year ago)
- Last Synced: 2025-03-06T11:44:24.655Z (10 months ago)
- Topics: crud, express, javascript, mongoose, nodejs, nodejs-library, npm-package
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/express-mongoose-crud-helper
- Size: 17.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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
```bash
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
```javascript
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.
```javascript
....
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
}
```