Загрузка нескольких файлов с документами - PullRequest
0 голосов
/ 22 января 2020

Я хочу добавить несколько файлов с документами, и это работает, но у меня есть несколько ошибок, и все вещи видны после перезагрузки страницы. Вот мой маршрут сообщения:

// @route POST /upload
// @desc  Uploads file and object to DB
router.post('/', upload.any(), (req, res) => {
  if (req.files !== undefined) {
    console.log(req.files);
    req.files.map(({ id, filename }) => {
      const newGallery = new Gallery({
        files_id: id,
        image: '/api/gallery/image/' + filename,
        description: req.body.description,
        tripLocation: req.body.tripLocation,
      })
      newGallery.save().then(photo => res.json(photo))
    });
  }
});

А вот предупреждение / ошибка (я получаю X ошибок, если я загружаю X файлов, и этот идентификатор отклонения: x - порядковый номер файла):

(узел: 7855) UnhandledPromiseRejectionWarning: Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту [0] в ServerResponse.setHeader (_http_outgoing. js: 470: 11) [0] в ServerRespon .header (/home/wiktor/MyApp/node_modules/express/lib/response.js:771:10) [0] at ServerResponse.send (/home/wiktor/MyApp/node_modules/express/lib/response.js: 170: 12) [0] на ServerResponse. json (/home/wiktor/MyApp/node_modules/express/lib/response.js:267:15) [0] на newGallery.save.then. фотография (/home/wiktor/MyApp/routes/api/gallery.js:94:43) [0] в process._tickCallback (внутренняя / process / next_tick. js: 68: 7) [0] (узел : 7855) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). (id отклонения: 6)

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

1 Ответ

0 голосов
/ 22 января 2020

Вы можете попробовать вот так:

// @route POST /upload
// @desc  Uploads file and object to DB
router.post('/', upload.any(), async (req, res, next) => {
  if (req.files !== undefined) {
    console.log(req.files);
    await Promise.all(req.files.map(({ id, filename }) => {
      const newGallery = new Gallery({
        files_id: id,
        image: '/api/gallery/image/' + filename,
        description: req.body.description,
        tripLocation: req.body.tripLocation,
      })
      return newGallery.save()
    })).then(data => res.json(data))
       .catch(err => next(err))
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...