Ошибка типа: невозможно прочитать свойство 'location' из неопределенного - PullRequest
0 голосов
/ 26 декабря 2018

Пытался опубликовать продукт с изображением с помощью AWS S3 (Multer и MulterS3).Каждый раз, когда я использую почтальон, я получаю «TypeError: Невозможно прочитать свойство 'location' of undefined", то есть строку, где у меня есть переменная Image.Что я делаю не так?

Вот мой код:

const router = require('express').Router();
const Product = require('../models/product');

const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');
const s3 = new aws.S3({ accessKeyId: "--", secretAccessKey: "--"});

const checkJWT = require('../middlewares/check-jwt');





var upload = multer({
    storage: multerS3({
        s3: s3,
        bucket: '365techhubwebapplication',
        metadata: function(req, file, cb) {
            cb(null, {fieldName: file.fieldName});
        },
        key: function (req, file, cb) {
            cb(null, Date.now().toString())
          }
          
    })
});


router.route('/products')
.get((req, res, next) => {
    res.json({
        success: "Hello"
    });
})

.post([checkJWT, upload.single('product_picture')], (req, res, next) => {
     console.log(upload);
     console.log(req.file);
    let product = new Product();
    product.owner = req.decoded.user._id;
    product.category = req.body.categoryId;
    product.title = req.body.title;
    product.price = req.body.price;
    product.description = req.body.description;
    product.image = req.file.location;
    
    product.save();
    res.json({
        success: true,
        message: 'Successfully Added the product'
    });
});

module.exports = router;

1 Ответ

0 голосов
/ 26 декабря 2018

Ваш req.file не определен, пожалуйста, отправьте req.file или добавьте проверку и обновите свой код следующим образом:

.post([checkJWT, upload.single('product_picture')], (req, res, next) => {
     console.log(upload);
     console.log(req.file);
    let product = new Product();
    product.owner = req.decoded.user._id;
    product.category = req.body.categoryId;
    product.title = req.body.title;
    product.price = req.body.price;
    product.description = req.body.description;
    if (req.file) { // Checking if req.file is not empty.
        product.image = req.file.location;
    }
    product.save();
    res.json({
        success: true,
        message: 'Successfully Added the product'
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...