проблема с multer, не позволяющим изображение по умолчанию - PullRequest
0 голосов
/ 03 мая 2018

Итак, у меня проблема с multer, которую я не могу понять. Когда я добавляю элемент с изображением, все работает без проблем, но если я пытаюсь добавить элемент без изображения, происходит сбой. У меня есть оператор if, который будет определять изображение по умолчанию, если req.file не определен, но он завершается ошибкой, говоря, что req.file.filename не определено ... Вот код

Настройка Multer:

var storage = multer.diskStorage({
  destination: function(req, file, callback) {
    callback(null, "./public/uploads");
  },
  filename: function(req, file, callback) {
    callback(null, Date.now() + file.originalname);
  }
});
var upload = multer({ storage: storage }).single("file");

Маршрут:

router.post("/item/add", middleware.isLoggedIn, (req, res) => {
  User.findById(req.user._id, (err, user) => {
    upload(req, res, err => {
      if (err) {
        req.flash("error", "failed to upload file");
        return res.redirect("/products");
      }
      var item = new Item();
      item.name = req.body.name;
      item.description = req.body.description;
      item.price = req.body.price;
      item.createdBy = { id: req.user._id, username: req.user.username };
      if (typeof req.file === undefined) {
        item.image = "/uploads/no-img.png";
      } else {
        item.image = "/uploads/" + req.file.filename;
      }
      item.save(function(err) {
        if (err) {
          res.send(err);
        }
        return res.redirect("/products");
      });
    });
  });
});

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

1 Ответ

0 голосов
/ 03 мая 2018

Ваша проблема здесь:

if (typeof req.file === undefined) {

typeof возвращает строку.

Ваш чек должен быть if (typeof req.file === "undefined") {

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