1.1.3 • Published 6 months ago

easy-crud-router v1.1.3

Weekly downloads
-
License
MIT
Repository
-
Last release
6 months ago

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

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.

1.1.3

6 months ago

1.1.2

6 months ago

1.1.1

6 months ago

1.1.0

6 months ago

1.0.9

6 months ago

1.0.8

6 months ago

1.0.7

6 months ago

1.0.6

6 months ago

1.0.5

6 months ago

1.0.4

6 months ago

1.0.3

6 months ago

1.0.2

6 months ago

1.0.1

6 months ago

1.0.0

6 months ago