Skip to content
/ ms-crud Public

Base crud microservice based on Express and Mongoose

Notifications You must be signed in to change notification settings

3xl/ms-crud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Base crud microservice based on Express and Mongoose

Usage

'use strict';

const Ms = require('./index.js');

/**
 * Middlewares
 * 
 */
const resourceCustomPathMiddleware = (req, res, next) => {
    // do something

    next();
}

const resourceMiddleware = (req, res, next) => {
    // do something

    next();
}

const customPathMiddleware = (req, res, next) => {
    // do something

    next();
}

/**
 * Handlers
 * 
 */
const resourceCustomPathHandler = (req, res, next) => {
    // Append a source property, containig an observable, to req object.
    // It's possible to access to the resource object through req.resource
    req.source = req.resource.service.one(req.params.id)
        .map(resource => {});

    next();
}

const customPathHandler = (req, res, next) => {
    const resource = req.app.get('ms').getResource(resourceName);

    req.source = resource.service.all();

    next();
}

/**
 * Transformers
 * 
 */
const resourceTransformer = (resource) => {
    return {
        // ...
    }
}

/**
 * Init application
 * 
 */
let ms = new Ms(
    // Mongo configuration
    {
        user: "",
        password: "",
        connection: "mongodb://{address}t:{port}/{database}"
    },

    // Middlewares
    [middleware]

    // Resources
    {
        resourceName: {
            properties: {
                propertyName: { type: String },
                propertyName: { type: String, endpoint: '{address}' }
            },
            middleware: resourceMiddleware,
            routes: [
                {
                    path: '/resourceCustomPath',
                    handler: resourceCustomPathHandler,
                    event: 'ResourceCustomeEventName',
                    method: 'GET',
                    middleware: resourceCustomPathMiddleware
                }
            ],
            transformer: resourceTransformer
        }
    },

    // Routes
    [
        {
            path: '/customPath',
            handler: customPathHandler,
            event: 'EventName',
            method: 'GET',
            middleware: customPathMiddleware
        }
    ]
);

ms.start(3000);

/**
 * Events
 * 
 */
ms.on('GetAll{resourceName}', (resource, data, emitter) => {
    console.log(data);
});

ms.on('GetOne{resourceName}', (resource, data, emitter) => {
    console.log(data);
});

ms.on('CreateOne{resourceName}', (resource, data, emitter) => {
    console.log(data);
});

ms.on('UpdateOne{resourceName}', (resource, data, emitter) => {
    console.log(data);
});

ms.on('RemoveOne{resourceName}', (resource, data, emitter) => {
    console.log(data);
});

ms.on('RestoreOne{resourceName}', (resource, data, emitter) => {
    console.log(data);
});

ms.on('ResourceCustomeEventName', (resource, data, emitter) => {
    console.log(data);
});

ms.on('EventName', (resource, data, emitter) => {
    console.log(data);
});

About

Base crud microservice based on Express and Mongoose

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published