Как я могу получить доступ к телу запроса из этого промежуточного программного обеспечения? - PullRequest
0 голосов
/ 07 мая 2019

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

Я пытался установить и настроить 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>

Я ожидаю получить доступ к телу запроса в промежуточном программном обеспечении, но получаютолько пустой объект взамен.

...