Web application CRUD Node and Mongoose
- list
- create
- findById
- update
- delete
$ npm install web-crud --save
'use strict';
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const FooSchema = new Schema({
name: {
type: String,
required: true
},
last_name: {
type: String,
required: true
},
full_name: {
type: String,
required: true
},
});
module.exports = mongoose.model('Foo', FooSchema);
'use strict';
const Model = require('./model/foo');
const Crud = require('web-crud');
Crud.model(Model); // set model mongoose
module.exports = class Foo extends Crud {
// if you want to override
static create (req, res) {
req.body.full_name = `${req.body.name} ${req.body.last_name}`
super.create(req, res); // call the super method or not :)
};
};
'use strict';
const express = require('express');
const router = express.Router();
const controller = require('./controller/foo');
router
.route('/')
.get(controller.list)
.post(controller.create)
router
.route('/:id')
.get(controller.findById)
.put(controller.update)
.delete(controller.delete)
module.exports = router;
List method accepts common query parameters. To prevent column name confusion, some of those parameter are prefixed with underscore.
- Find
/myapiurl/list?my_object_propertie=SomeValue
According to: https://mongoosejs.com/docs/api.html#query_Query-find
- Limit
/myapiurl/list?_limit=10
According to: https://mongoosejs.com/docs/api.html#query_Query-limit
- Skip
/myapiurl/list?_skip=5
According to: https://mongoosejs.com/docs/api.html#query_Query-skip
- Sort
/myapiurl/list?_sort=property_name
/myapiurl/list?_sort=-property_name
According to: https://mongoosejs.com/docs/api.html#query_Query-sort
- Count
/myapiurl/list?_count=true
According to: https://mongoosejs.com/docs/api.html#query_Query-count