Express middleware как получить пост-запрос на запись логики - PullRequest
0 голосов
/ 28 апреля 2020

Моя ситуация такова, как написать промежуточное программное обеспечение перед отправкой запроса.

router.post('/', (req, res) => {
   model.create({...})
})

, но я хочу внести некоторые изменения перед отправкой запроса. как я могу написать промежуточное программное обеспечение до него.

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Чтобы создать промежуточное ПО до какого-либо маршрута, включите app.use вот так

app.use('/', function(req, res, next) {
  if (...) {
     return res.status(404).send('Not found');
  }
  req.customData = {...};
  next(); // call next middleware
});

router.post('/', (req, res) => {
   model.create(req.customData)
})

Вы можете создать промежуточное ПО для каждого маршрута, просто пропустив маршрут:

app.use(function(req, res) { ... });

если app недоступен там, где работает ваш код, вы всегда можете получить его от маршрутизатора:

const app = router.app;
0 голосов
/ 28 апреля 2020

Здесь недавно я работал над этим. Вы можете найти краткие сведения здесь.

// Routes / API

const express = require('express');
const router = express.Router();

//Project Model 
const Blog = require('../../models/blog');

//@route GET api/blogs
// @desc Get all blogs data
//@access public

router.get('/', (req, res) => {
    Blog.find()
        .sort({date: -1 })
        .then(blogs => res.json(blogs));

});

//@route GET api/blog/id
// @desc Get all blogs data
//@access public

router.post('/edit/:id', (req, res) => {
    Blog.findById(req.params.id)
        .then(editBlog => res.json(editBlog))
        .catch(err => res.status(400).json('Error: ' + err));

});

//@route POST api/blogs
// @desc create an blogs
//@access private

router.post('/', (req, res) => {
    const newBlog = new Blog({
        blog_short_desc: req.body.blog_short_desc,
        blog_name: req.body.blog_name,
        blog_desc: req.body.blog_desc,
        blog_image_link: req.body.blog_image_link,
        blog_by: req.body.blog_by,
        blog_by_author: req.body.blog_by_author

    });

    newBlog.save().then(blogs => res.json(blogs));
});


//@route UPDATE api/blogs
// @desc update an blogs
//@access private

router.post('/update/:id',  (req, res) => {
    Blog.findById(req.params.id)
        .then(blog => {
            blog.blog_short_desc = req.body.blog_short_desc;
            blog.blog_name = req.body.blog_name;
            blog.blog_desc = req.body.blog_desc;
            blog.blog_image_link = req.body.blog_image_link;
            blog.blog_by = req.body.blog_by;
            blog.blog_by_author = req.body.blog_by_author;

            blog.save()
                .then( () => res.json('Blog Updated!'))
                .catch(err => res.status(400).json()('Error: ' + err));

        })
        .catch(err => res.status(400).json('Error: ' + err));
});

//@route DELETE api/blogs/:id
// @desc delete an blogs description
//@access private

router.delete('/:id',  (req, res) => {
    Blog.findById(req.params.id)
    .then(blog => blog.remove().then(() => res.json({success: true})))
    .catch(err => res.status(404).json({success: false}));
});



module.exports = router;

// Модели

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

//Create schema
const BlogSchema = new Schema({
    blog_short_desc: {
        type: String,
        required: true
    },
    blog_name: {
        type: String,
        required: true
    },
    blog_desc: {
        type: String,
        required: true
    },
    blog_image_link: {
        type: String,
        required: false
    },
    blog_by:{
        type: String,
        required: true
    },
    blog_by_author:{
        type: String,
        required: true
    },
    date: {
        type: Date,
        default: Date.now
    }
});

module.exports = Blog = mongoose.model('blog', BlogSchema);

Вам нужны дальнейшие разъяснения. Пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...