如何从该中间件访问请求的主体?

时间:2019-05-07 12:24:59

标签: javascript node.js express middleware body-parser

我试图在中间件中访问请求的正文,以便仅在特定字段发生更改时才执行请求(仅在上传新图片时才释放图片),但是我无法访问该正文

我尝试安装和配置cors以及在特定于路由的文件中重新配置body-parser,以及对代码进行混洗,但没有任何帮助(这是其他问题的建议)

const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser');
const multer = require('multer');
const glob = require('glob');
const fs = require('fs');
const _ = require('lodash');

const urlencodedParser = bodyParser.urlencoded({ extended: false });

//MIDDLEWARE
router.use("/immobili/:_id/edit", urlencodedParser, function (req, res, next) {
    console.log(req.body);
    const requestedId = req.params._id;

    Immobile.findOne({ _id: requestedId }, (err, immobile) => {
        if (err) return console.error(err);
        immobile.immagini = [];
        cancellaFoto(immobile);
        if (this.cancellato) {
            return setTimeout(next, 1000);
        } else {
            return console.log("Aborted");
        }
    });
});

//EDIT PUT ROUTE
router.put("/immobili/:_id/edit", upload.array('immaginePrincipale', 30), function (req, res) {

    const requestedId = req.params._id;
    const dati = req.body;
    const proprietaImmagini = req.files;
    const immagini = proprietaImmagini.map(function (immagine) {
        //console.log(immagine.path);
        return immagine.path;
    });

    let vetrina;
    req.body.vetrina === 'on' ? vetrina = true : vetrina = false;

    Immobile.findOneAndUpdate({ _id: requestedId }, {
        numeroScheda: dati.numeroScheda,

        //[... ALL DATA ... ]

        immagini: immagini,
    }, function (err, updatedImmobile) {
        if (err) return console.error(err);
        res.redirect("/immobili/" + req.body.categoria + "/" + _.toLower(req.body.localita) + "/" + requestedId);
    });
});

这是我用来发送数据的表格:

<form action="/immobili/<%= immobile._id %>/edit?_method=PUT" method="POST"
        enctype="multipart/form-data">

//[ ... FORM INPUTS ... ]

<input type="file" name="immaginePrincipale" multiple="multiple" id="immaginePrincipale"></input>
<input type="submit" value="Pubblica">
    </form>

我希望可以在中间件中访问请求的正文,但是我只会得到一个空对象。

0 个答案:

没有答案