easy-crud-router v1.1.3
EasyCRUDRouter
EasyCRUDRouter is a Node.js library designed to simplify and automate the creation of CRUD (Create, Read, Update, Delete) routes for Express applications, specifically tailored for Mongoose models. It integrates mongoose-paginate-v2 for efficient pagination and provides built-in support for error handling and Joi validation.
Table of Contents
- EasyCRUDRouter
Features
- Seamless Mongoose Integration: Designed to work effortlessly with Mongoose models.
- Built-in Pagination: Integrates mongoose-paginate-v2 for easy and efficient data pagination.
- Automatic Joi Validation: Leverages Joi to validate request data with ease.
- Flexible Middleware Support: Easily incorporate custom middleware into your CRUD operations.
- Swagger Documentation Support: Simplifies Swagger documentation generation for your API routes.
- Extensible Service Layer: Customize or extend the provided BaseService to suit your unique requirements.
Installation
npm install easy-crud-router
Quick Start
Here's a quick example to get you started using EasyCRUDRouter
with a Mongoose model:
const express = require("express");
const { CRUDRoutes } = require("easy-crud-router");
const mongoose = require("mongoose");
const { MyModel } = require("./models/MyModel");
const myModelJoiSchema = require("./schemas/myModelJoiSchema");
mongoose.connect("your-mongodb-uri", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const app = express();
app.use(express.json());
const myCRUDRoutes = new CRUDRoutes({
model: MyModel,
joiSchema: myModelJoiSchema,
});
app.use("/api/myModel", myCRUDRoutes.router);
app.listen(3000, () => console.log("Server running on port 3000"));
Getting Started with EasyCRUDRouter
This guide will walk you through the basics of using this package to set up CRUD routes in Node.js applications, with a focus on Mongoose models and pagination.
Installation
Install the package using npm:
npm install easy-crud-router
Setting Up Your First Routes
Step 1: Import Dependencies
Start by importing necessary libraries:
const express = require("express");
const { CRUDRoutes } = require("easy-crud-router");
const mongoose = require("mongoose");
Step 2: Define Your Mongoose Model
Set up your Mongoose model. For example:
const mongoosePaginate = require("mongoose-paginate-v2");
const MyModelSchema = new mongoose.Schema({
// Your schema fields
});
MyModelSchema.plugin(mongoosePaginate);
const MyModel = mongoose.model("MyModel", MyModelSchema);
Step 3: Define Your Joi Schema
Define a Joi schema for validation:
const Joi = require("joi");
const myModelJoiSchema = Joi.object({
// Joi validation rules
});
Step 4: Initialize Mongoose
Connect to your MongoDB database:
mongoose.connect("your-mongodb-uri", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
Step 5: Create CRUD Routes
Create an instance of CRUDRoutes
with your model and Joi schema:
const myCRUDRoutes = new CRUDRoutes({
model: MyModel,
joiSchema: myModelJoiSchema,
});
Step 6: Use Routes with Express
Integrate the CRUD routes into your Express application:
const app = express();
app.use(express.json());
app.use("/api/myModel", myCRUDRoutes.router);
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
EasyCRUDRouter API Reference
This document provides detailed information about the API of EasyCRUDRouter
, a Node.js package for creating CRUD (Create, Read, Update, Delete) routes quickly and efficiently with Mongoose models and mongoose-paginate-v2
.
Constructor
new CRUDRoutes({ model, joiSchema, referenceFields, middleware })
Creates a new instance of CRUDRoutes.
Parameters
model
: Your Mongoose data model.joiSchema
: Joi schema for input validation.referenceFields
: Optional. Array of objects specifying reference fields for relational data handling.middleware
: Optional. An object specifying middleware for different CRUD operations.
Methods
createOne(req, res)
Handles creating a new record.
getOne(req, res)
Fetches a single record by its ID.
getAll(req, res)
Retrieves multiple records, with support for pagination and filters.
updateOne(req, res)
Updates a record by its ID.
deleteOne(req, res)
Deletes a record by its ID.
patchOne(req, res)
Partially updates a record by its ID.
Middleware
Middleware functions can be added to CRUD operations. Here's how you can specify them:
const myCRUDRoutes = new CRUDRoutes({
// ...
middleware: {
getAll: [myCustomMiddleware],
createOne: [validationMiddleware, anotherMiddleware],
},
});
Pagination and Filters
EasyCRUDRouter
integrates mongoose-paginate-v2
for efficient pagination and filtering of data. Pagination and filter options can be passed through the query parameters.
Swagger Integration
EasyCRUDRouter
supports automatic Swagger documentation generation. Use getPaths
to integrate with Swagger:
app.use(
"/docs",
swaggerUi.serve,
swaggerUi.setup({
...swaggerOptions,
paths: {
...swaggerOptions.paths,
...myCRUDRoutes.getPaths(),
},
})
);
For more details, refer to the basicUsage.js
example in the package.
For any further questions or contributions, please visit our GitHub repository.
Examples
Explore the examples directory for sample implementations and various usage scenarios.
Contributing
We appreciate contributions! If you'd like to contribute, please read our contributing guidelines.
License
EasyCRUDRouter is MIT licensed.